Autor Beitrag
mbuettner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 2000
C#, Plainedit; PHP, Weaverslave
BeitragVerfasst: So 14.02.10 22:14 
Zitat:
Attribute 'DllImport`is not valid on this declaration type

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices; 

namespace Programm{
  public class SteuerelementeForm : System.Windows.Forms.Form
  {
     [DllImport("vektoren.dll")]
    private MainMenu mainMenu;
    private MenuItem vektoradditionMenu, vektoren;
    private MenuItem spitzeberechnenMenu, mittelpunkt_Menu;
    private MenuItem beendenMenu, gleichungen;
    private MenuItem helpMenu, ungleichungen, gleichungen2;
    
    public SteuerelementeForm()
    {
       Name = "VektorForm";
       Text = "Mathe"//Titel Text
       Font = new Font("Arial"9F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0))); //Schriftart
       FormBorderStyle = FormBorderStyle.FixedDialog;
       Location = new Point(0,0);
       Size = new Size(500,300);
       Komponenten();
     }
     private void Komponenten() // Menü initialisieren
     {
       mainMenu = new MainMenu();
       vektoren = new MenuItem();
       vektoradditionMenu = new MenuItem();
       spitzeberechnenMenu = new MenuItem();
       gleichungen2 = new MenuItem();
       ungleichungen = new MenuItem();
       gleichungen = new MenuItem();
       beendenMenu = new MenuItem();
       helpMenu = new MenuItem();
       mittelpunkt_Menu = new MenuItem();
       
       vektoren.Index = 0;
       vektoren.Text = "Vektoren";  
       gleichungen.Index = 1;
       gleichungen.Text = "Gleichungen";
       
       gleichungen2.Index = 0;
       gleichungen2.Text = "Gleichungen";
       ungleichungen.Index = 1;
       ungleichungen.Text = "Ungleichungen";
       
       mittelpunkt_Menu.Index = 2;
       mittelpunkt_Menu.Text = "Mittelpunkt";
       mittelpunkt_Menu.Click += new EventHandler(new vektoren.mittelp);
       
       helpMenu.Index = 3;
       helpMenu.Text = "?";
       helpMenu.Click += new EventHandler(help_click);
       
       beendenMenu.Index = 2;
       beendenMenu.Text = "Beenden";
       beendenMenu.Click += new EventHandler(beendenMenu_Click);
       
       spitzeberechnenMenu.Index = 1;
       spitzeberechnenMenu.Text = "Punkt berechnen";
       spitzeberechnenMenu.Click += new EventHandler(new vektoren().spitzeberechnenMenu_Click);   
       
       vektoradditionMenu.Index = 0;
       vektoradditionMenu.Text = "Vektoraddition";
       vektoradditionMenu.Click += new EventHandler(new vektoren().vektoradditionMenu_Click);
       
       mainMenu.MenuItems.Add(vektoren);
       vektoren.MenuItems.Add(vektoradditionMenu);
       vektoren.MenuItems.Add(spitzeberechnenMenu);
       vektoren.MenuItems.Add(mittelpunkt_Menu);
       mainMenu.MenuItems.Add(gleichungen);
       gleichungen.MenuItems.Add(gleichungen2);
       gleichungen.MenuItems.Add(ungleichungen);
       mainMenu.MenuItems.Add(beendenMenu);
       mainMenu.MenuItems.Add(helpMenu);
       
       Menu = mainMenu;
     }
     public static void Main() // Hauptteil ("Main") des Programms
     {
       /*vektoren = new vektoren();*/
        Application.Run(new SteuerelementeForm()); // Fenster initialisieren
     }
     private void beendenMenu_Click(object sender, EventArgs e){ // Wenn auf Beenden geklickt wurde
       Close(); // dann schließe Fenster
     }
     private void help_click(object sender, EventArgs e){
       MessageBox.Show("Ein Programm für Vektoren und Gleichungen.\nGeschrieben in C# \n© by Markus Büttner, 2010");
     }
  }
  public class gleichungen{
  }
}

Woran liegt der Fehler? Bei anderen scheint es auch zu funktionieren.
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: So 14.02.10 23:58 
Bei anderen funktioniert das? Kann ich mir nicht vorstellen ... Überleg nochmal was du machen willst und such im Internet. dazu gibt es schon viele Beispiele. Wenn du dann eine konkrete Frage hast... komm wieder

Gruß Daniel
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 15.02.10 09:38 
user profile iconmbuettner hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
2:
     [DllImport("vektoren.dll")]
    private MainMenu mainMenu;
Wie soll denn bitte ein MainMenu in der DLL liegen? :shock:
Das verstehe ich nicht wie du dir das vorstellst...

Ein Attribut gilt immer für die darauffolgende Deklaration, das ist bei dir ja das MainMenu. Wie wäre es, wenn du einmal in die MSDN-Bibliothek schaust was du da eigentlich tust?
msdn.microsoft.com/d...ibrary/48zeb25s.aspx
mbuettner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 2000
C#, Plainedit; PHP, Weaverslave
BeitragVerfasst: Mo 15.02.10 10:58 
Also:

ich will eine Funktion aus der DLL einbinden. Aber wie genau muss ich das machen?
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices; 

namespace Programm{
  public class SteuerelementeForm : System.Windows.Forms.Form
  {
     [DllImport("vektoren.dll")]
     extern static void vektoradditionMenu_Click();
     extern static void spitzeberechnenMenu_Click();
     extern static void mittelp();
     
    private MainMenu mainMenu;
    private MenuItem vektoradditionMenu, vektoren;
    private MenuItem spitzeberechnenMenu, mittelpunkt_Menu;
    private MenuItem beendenMenu, gleichungen;
    private MenuItem helpMenu, ungleichungen, gleichungen2;
    
    public SteuerelementeForm()
    {
       Name = "VektorForm";
       Text = "Mathe"//Titel Text
       Font = new Font("Arial"9F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0))); //Schriftart
       FormBorderStyle = FormBorderStyle.FixedDialog;
       Location = new Point(0,0);
       Size = new Size(500,300);
       Komponenten();
     }
     private void Komponenten() // Menü initialisieren
     {
       mainMenu = new MainMenu();
       vektoren = new MenuItem();
       vektoradditionMenu = new MenuItem();
       spitzeberechnenMenu = new MenuItem();
       gleichungen2 = new MenuItem();
       ungleichungen = new MenuItem();
       gleichungen = new MenuItem();
       beendenMenu = new MenuItem();
       helpMenu = new MenuItem();
       mittelpunkt_Menu = new MenuItem();
       
       vektoren.Index = 0;
       vektoren.Text = "Vektoren";  
       gleichungen.Index = 1;
       gleichungen.Text = "Gleichungen";
       
       gleichungen2.Index = 0;
       gleichungen2.Text = "Gleichungen";
       ungleichungen.Index = 1;
       ungleichungen.Text = "Ungleichungen";
       
       mittelpunkt_Menu.Index = 2;
       mittelpunkt_Menu.Text = "Mittelpunkt";
       mittelpunkt_Menu.Click += new EventHandler(new vektoren().mittelp);
       
       helpMenu.Index = 3;
       helpMenu.Text = "?";
       helpMenu.Click += new EventHandler(help_click);
       
       beendenMenu.Index = 2;
       beendenMenu.Text = "Beenden";
       beendenMenu.Click += new EventHandler(beendenMenu_Click);
       
       spitzeberechnenMenu.Index = 1;
       spitzeberechnenMenu.Text = "Punkt berechnen";
       spitzeberechnenMenu.Click += new EventHandler(new vektoren().spitzeberechnenMenu_Click);   
       
       vektoradditionMenu.Index = 0;
       vektoradditionMenu.Text = "Vektoraddition";
       vektoradditionMenu.Click += new EventHandler(new vektoren().vektoradditionMenu_Click);
       
       mainMenu.MenuItems.Add(vektoren);
       vektoren.MenuItems.Add(vektoradditionMenu);
       vektoren.MenuItems.Add(spitzeberechnenMenu);
       vektoren.MenuItems.Add(mittelpunkt_Menu);
       mainMenu.MenuItems.Add(gleichungen);
       gleichungen.MenuItems.Add(gleichungen2);
       gleichungen.MenuItems.Add(ungleichungen);
       mainMenu.MenuItems.Add(beendenMenu);
       mainMenu.MenuItems.Add(helpMenu);
       
       Menu = mainMenu;
     }
     public static void Main() // Hauptteil ("Main") des Programms
     {
       /*vektoren = new vektoren();*/
        Application.Run(new SteuerelementeForm()); // Fenster initialisieren
     }
     private void beendenMenu_Click(object sender, EventArgs e){ // Wenn auf Beenden geklickt wurde
       Close(); // dann schließe Fenster
     }
     private void help_click(object sender, EventArgs e){
       MessageBox.Show("Ein Programm für Vektoren und Gleichungen.\nGeschrieben in C# \n© by Markus Büttner, 2010");
     }
  }
  public class gleichungen{
  }
}

Hier meckert der CSC immer:csc.exe (jpg, 69.71 KB)
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 15.02.10 11:04 
Naja, sicher meckert der Compiler da bei den beiden folgenden Funktionen, denn du hast nur für die erste das DllImport Attribut angegeben, also wo soll der Compiler die beiden folgenden suchen?

Ein Attribut gilt für die eine folgende Deklaration.
mbuettner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 2000
C#, Plainedit; PHP, Weaverslave
BeitragVerfasst: Mo 15.02.10 11:23 
Hallo,

jetzt meckert der CSC aber:
Zitat:
No overload for ´mittelp´ matches delegate ´System.EventHandler´ mscorlib.dll: (Location of symbol related to previous error)

Und das bei jeder Funktion, die ich aus der DLL aufrufe.
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices; 

namespace Programm{
  public class SteuerelementeForm : System.Windows.Forms.Form
  {
     [DllImport("vektoren.dll")]
     extern static void vektoradditionMenu_Click();
     [DllImport("vektoren.dll")]
     extern static void spitzeberechnenMenu_Click();
     [DllImport("vektoren.dll")]
     extern static void mittelp();
     
    private MainMenu mainMenu;
    private MenuItem vektoradditionMenu, vektoren;
    private MenuItem spitzeberechnenMenu, mittelpunkt_Menu;
    private MenuItem beendenMenu, gleichungen;
    private MenuItem helpMenu, ungleichungen, gleichungen2;
    
    public SteuerelementeForm()
    {
       Name = "VektorForm";
       Text = "Mathe"//Titel Text
       Font = new Font("Arial"9F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0))); //Schriftart
       FormBorderStyle = FormBorderStyle.FixedDialog;
       Location = new Point(0,0);
       Size = new Size(500,300);
       Komponenten();
     }
     private void Komponenten() // Menü initialisieren
     {
       mainMenu = new MainMenu();
       vektoren = new MenuItem();
       vektoradditionMenu = new MenuItem();
       spitzeberechnenMenu = new MenuItem();
       gleichungen2 = new MenuItem();
       ungleichungen = new MenuItem();
       gleichungen = new MenuItem();
       beendenMenu = new MenuItem();
       helpMenu = new MenuItem();
       mittelpunkt_Menu = new MenuItem();
       
       vektoren.Index = 0;
       vektoren.Text = "Vektoren";  
       gleichungen.Index = 1;
       gleichungen.Text = "Gleichungen";
       
       gleichungen2.Index = 0;
       gleichungen2.Text = "Gleichungen";
       ungleichungen.Index = 1;
       ungleichungen.Text = "Ungleichungen";
       
       mittelpunkt_Menu.Index = 2;
       mittelpunkt_Menu.Text = "Mittelpunkt";
       mittelpunkt_Menu.Click += new EventHandler(mittelp);
       
       helpMenu.Index = 3;
       helpMenu.Text = "?";
       helpMenu.Click += new EventHandler(help_click);
       
       beendenMenu.Index = 2;
       beendenMenu.Text = "Beenden";
       beendenMenu.Click += new EventHandler(beendenMenu_Click);
       
       spitzeberechnenMenu.Index = 1;
       spitzeberechnenMenu.Text = "Punkt berechnen";
       spitzeberechnenMenu.Click += new EventHandler(spitzeberechnenMenu_Click);   
       
       vektoradditionMenu.Index = 0;
       vektoradditionMenu.Text = "Vektoraddition";
       vektoradditionMenu.Click += new EventHandler(vektoradditionMenu_Click);
       
       mainMenu.MenuItems.Add(vektoren);
       vektoren.MenuItems.Add(vektoradditionMenu);
       vektoren.MenuItems.Add(spitzeberechnenMenu);
       vektoren.MenuItems.Add(mittelpunkt_Menu);
       mainMenu.MenuItems.Add(gleichungen);
       gleichungen.MenuItems.Add(gleichungen2);
       gleichungen.MenuItems.Add(ungleichungen);
       mainMenu.MenuItems.Add(beendenMenu);
       mainMenu.MenuItems.Add(helpMenu);
       
       Menu = mainMenu;
     }
     public static void Main() // Hauptteil ("Main") des Programms
     {
       /*vektoren = new vektoren();*/
        Application.Run(new SteuerelementeForm()); // Fenster initialisieren
     }
     private void beendenMenu_Click(object sender, EventArgs e){ // Wenn auf Beenden geklickt wurde
       Close(); // dann schließe Fenster
     }
     private void help_click(object sender, EventArgs e){
       MessageBox.Show("Ein Programm für Vektoren und Gleichungen.\nGeschrieben in C# \n© by Markus Büttner, 2010");
     }
  }
  public class gleichungen{
  }
}
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 15.02.10 11:49 
Zitat:
No overload for ´mittelp´ matches delegate ´System.EventHandler´ mscorlib.dll: (Location of symbol related to previous error)
Ist ja auch so, es gibt keine Überladung von mittelp, die mit der Deklaration eines EventHablers übereinstimmt. Dementsprechend passt das nicht zusammen...

Schau dir einmal an die Methoden aussehen, die als EventHandler verwendet werden... die haben Parameter... siehe dein help_click z.B.
msdn.microsoft.com/d...em.eventhandler.aspx
Und dementsprechend kannst du keine Funktion ohne diese Parameter als EventHandler angeben.

Besser wäre es, wenn du einen eigenen Handler benutzt und dann nur von dort die DLL-Routine aufrufst. Sonst geht das kreuz und quer durcheinander...
mbuettner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 2000
C#, Plainedit; PHP, Weaverslave
BeitragVerfasst: Mo 15.02.10 12:11 
mahte
Tja, aber in der DLL ist ganz klar die Funktion vektoraddtitionMenu_Click als public definiert.
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
using System;
using System.Drawing;
using System.Windows.Forms;

namespace vektoren{
public class vektoren{
    private TextBox v1x_koo, v1y_koo;
    private TextBox v2x_koo, v2y_koo;
    private TextBox ergebnis, ergebn_y;
    private TextBox px, py, p2x, p2y, mx, my;
    private TextBox v11_koo, v12_koo;
    private TextBox erg_spz1, erg_spz2;
    private Label p, p2;
    private Label v11, v12;
    private Label v1x,v1y;
    private Label v2x,v2y;
    private Label erg_x, erg_y;
    private Button ergebns, spitze;
    private CheckBox gegenvektor;
    private Label m;
    
    public void vektoradditionMenu_Click(object sender, EventArgs e){ // Wenn man Vektoren addieren will
       ergebns.Controls.Remove(ergebns);
       px.Controls.Remove(px);
       py.Controls.Remove(py);
       v1x = new Label();
        v1y = new Label();
        v2x = new Label();
        v2y = new Label();
        erg_x = new Label();
        erg_y = new Label();
        v1x_koo = new TextBox();
        v1y_koo = new TextBox();
        v2x_koo = new TextBox();
        v2y_koo = new TextBox();
        ergebnis = new TextBox();
        ergebn_y = new TextBox();
       ergebns = new Button();
       
       v1x_koo.Controls.Add(v1x_koo);
      v1y_koo.Controls.Add(v1y_koo);
      v1x.Controls.Add(v1x);
      v1y.Controls.Add(v1y);
       
       v1x.Name = "v1";
       v1x.Text = "Vektor 1 (x): ";
       v1x.Location = new Point(8,10);
       v1x.Size = new Size(120,20);
       v1y.Name = "v1";
       v1y.Text = "Vektor 1 (y): ";
       v1y.Location = new Point(8,40);
      v1y.Size = new Size(120,20);
       
       v2x.Name = "v2";
       v2x.Text = "Vektor 2 (x): ";
       v2x.Location = new Point(200,10);
       v2x.Size = new Size(120,20);
       v2y.Name = "v2";
       v2y.Text = "Vektor 2 (y): ";
       v2y.Location = new Point(200,40);
       v2y.Size = new Size(120,20);
         
      erg_x.Name = "ergebnis";
       erg_x.Text = "Ergebnis (x)";
       erg_x.Location = new Point(10,100);
       erg_x.Size = new Size(120,20);
       erg_y.Name = "ergebnis";
       erg_y.Text = "Ergebnis (y)";
       erg_y.Location = new Point(10,130);
       erg_y.Size = new Size(120,20);       
           
       v1x_koo.Name = "Vektor1_x";
       v1x_koo.Text = "";
       v1x_koo.Location = new Point(908);
       v1x_koo.Size = new Size(90,20);
       v1y_koo.Name = "Vektor1_y";
       v1y_koo.Text = "";
       v1y_koo.Location = new Point(9038);
       v1y_koo.Size = new Size(90,20);
             
       v2x_koo.Name = "Vektor2_x";
       v2x_koo.Text = "";
       v2x_koo.Location = new Point(2808);
       v2x_koo.Size = new Size(90,20);
       v2y_koo.Name = "v2";
       v2y_koo.Text = "";
       v2y_koo.Location = new Point(28038);
       v2y_koo.Size = new Size(90,20);
       
       ergebnis.Name = "Ergebnis";
       ergebnis.Text = "";
       ergebnis.Location = new Point(90,98);
       ergebnis.Size = new Size(90,20);
       ergebnis.Enabled = false;
       ergebn_y.Name = "Ergebnis";
       ergebn_y.Text = "";
       ergebn_y.Location = new Point(90,128);
       ergebn_y.Size = new Size(90,20);
       ergebn_y.Enabled = false;
       
       ergebns.Name = "Berechnen";
       ergebns.Text = "&Berechnen";
       ergebns.Location = new Point(200,98);
       ergebns.Size = new Size(90,20);
       ergebns.Click += new EventHandler(ergebns_click);
       
       p.Controls.Remove(p);
       p2.Controls.Remove(p2);
       v11.Controls.Remove(v11);
       v12.Controls.Remove(v12);
       px.Controls.Remove(px);
       py.Controls.Remove(py);
       v11_koo.Controls.Remove(v11_koo);
       v12_koo.Controls.Remove(v12_koo);
       erg_spz1.Controls.Remove(erg_spz1);
       erg_spz2.Controls.Remove(erg_spz2);
       spitze.Controls.Remove(spitze);
       gegenvektor.Controls.Remove(gegenvektor);
       p2y.Controls.Remove(p2y);
       p2x.Controls.Remove(p2x);
       
      v2x_koo.Controls.Add(v2x_koo);
      v2y_koo.Controls.Add(v2y_koo);
      ergebnis.Controls.Add(ergebnis);
      ergebn_y.Controls.Add(ergebn_y);
      ergebns.Controls.Add(ergebns);
      v2x.Controls.Add(v2x);
      v2y.Controls.Add(v2y);
      erg_x.Controls.Add(erg_x);
       erg_y.Controls.Add(erg_y);
     }
     public void spitzeberechnenMenu_Click(object sender, EventArgs e){ // Wenn man einen Punkt vom Vektor berechnen will
       p.Controls.Remove(p);
       p2.Controls.Remove(p2);
       ergebns.Controls.Remove(ergebns);
       px.Controls.Remove(px);
       py.Controls.Remove(py);
       p = new Label();
       p2 = new Label();
       v11 = new Label();
       v12 = new Label();
       px = new TextBox();
       py = new TextBox();
       v11_koo = new TextBox();
       v12_koo = new TextBox();
       erg_spz1 = new TextBox();
       erg_spz2 = new TextBox();
       spitze = new Button();
       gegenvektor = new CheckBox();
       
       p.Name = "P";
       p.Text = "Punkt P (             |              )";
       p.Location = new Point(10,10);
       p.Size = new Size(350,20);
       p2.Name = "P2";
       p2.Text = "Punkt P'(             |              )";
       p2.Location = new Point(200,10);
       p2.Size = new Size(200,20);
       
       px.Name = "Px";
       px.Text = "";
       px.Location = new Point(65,8);
       px.Size = new Size(35,20);
       py.Name = "Py";
       py.Text = "";
       py.Location = new Point(110,8);
       py.Size = new Size(35,20);
       
       v11.Name = "V";
       v11.Text = "Vektor 1 (x)";
       v11.Location = new Point(10,40);
       v11.Size = new Size(10020);
       v12.Name = "V";
       v12.Text = "Vektor 1 (y)";
       v12.Location = new Point(10,70);
       v12.Size = new Size(10020);
       
       v11_koo.Name = "V11";
       v11_koo.Text = "";
       v11_koo.Location = new Point(90,38);
       v11_koo.Size = new Size(55,20);
       v12_koo.Name = "V12";
       v12_koo.Text = "";
       v12_koo.Location = new Point(90,68);
       v12_koo.Size = new Size(5520);
       
       erg_spz1.Name = "erg";
       erg_spz1.Text = "";
       erg_spz1.Location = new Point(255,8);
       erg_spz1.Size = new Size(35,20);
       erg_spz1.Enabled = false;
       erg_spz2.Name = "erg";
       erg_spz2.Text = "";
       erg_spz2.Location = new Point(300,8);
       erg_spz2.Size = new Size(35,20);
       erg_spz2.Enabled = false;
       
       spitze.Name = "Berechnen";
       spitze.Text = "B&erechnen";
       spitze.Location = new Point(200,68);
       spitze.Size = new Size(100,20);
       spitze.Click += new EventHandler(spitze_berechnen);
       
       gegenvektor.Name = "gegenv";
       gegenvektor.Text = "Gegenvektor";
       gegenvektor.Location = new Point(200,38);
       
       v2x_koo.Controls.Remove(v2x_koo);
       v2y_koo.Controls.Remove(v2y_koo);
      ergebnis.Controls.Remove(ergebnis);
      ergebn_y.Controls.Remove(ergebn_y);
      ergebns.Controls.Remove(ergebns);
      v2x.Controls.Remove(v2x);
      v2y.Controls.Remove(v2y);
      erg_x.Controls.Remove(erg_x);
       erg_y.Controls.Remove(erg_y);
       v1x_koo.Controls.Remove(v1x_koo);
      v1y_koo.Controls.Remove(v1y_koo);
      v1x.Controls.Remove(v1x);
      v1y.Controls.Remove(v1y);
      p2x.Controls.Remove(p2x);
      p2y.Controls.Remove(p2y);
      m.Controls.Remove(m);
      
      erg_spz1.Controls.Add(erg_spz1);
      erg_spz2.Controls.Add(erg_spz2);
       p2.Controls.Add(p2);
       px.Controls.Add(px);
       py.Controls.Add(py);
       v11_koo.Controls.Add(v11_koo);
       v12_koo.Controls.Add(v12_koo);
       p.Controls.Add(p);
       v11.Controls.Add(v11);
       v12.Controls.Add(v12);
       spitze.Controls.Add(spitze);
       gegenvektor.Controls.Add(gegenvektor);
     }
     public void mittelp(object sender, EventArgs e){
       v2x_koo.Controls.Remove(v2x_koo);
       v2y_koo.Controls.Remove(v2y_koo);
       ergebnis.Controls.Remove(ergebnis);
             ergebn_y.Controls.Remove(ergebn_y);
           ergebns.Controls.Remove(ergebns);
        v2x.Controls.Remove(v2x);
        v2y.Controls.Remove(v2y);
        erg_x.Controls.Remove(erg_x);
        erg_y.Controls.Remove(erg_y);
        v1x_koo.Controls.Remove(v1x_koo);
        v1y_koo.Controls.Remove(v1y_koo);
        v1x.Controls.Remove(v1x);
       v1y.Controls.Remove(v1y);
        p.Controls.Remove(p);
        p2.Controls.Remove(p2);
        v11.Controls.Remove(v11);
        v12.Controls.Remove(v12);
        px.Controls.Remove(px);
        py.Controls.Remove(py);
        v11_koo.Controls.Remove(v11_koo);
        v12_koo.Controls.Remove(v12_koo);
        erg_spz1.Controls.Remove(erg_spz1);
        erg_spz2.Controls.Remove(erg_spz2);
        spitze.Controls.Remove(spitze);
        gegenvektor.Controls.Remove(gegenvektor);
        
        m = new Label();
        p = new Label();
        p2 = new Label();
        mx = new TextBox();
        my = new TextBox();
        px = new TextBox();
        py = new TextBox();
        p2x = new TextBox();
        p2y = new TextBox();
        ergebns = new Button();
        
        p.Name = "p";
        p.Text = "P (               |               )";
        p.Location = new Point(10,10);
        p.Size = new Size(190,20);
        p2.Name = "P'";
        p2.Text = "P'(               |               )";
        p2.Location = new Point(10,40);
        p2.Size = new Size(190,20);
        m.Name = "M";
        m.Text = "M ( x | y )";
        m.Location = new Point(200,40);
        m.Size = new Size(100,20);
        
        px.Name = "P";
        px.Text = "";
        px.Location = new Point(30,8);
        px.Size = new Size(40,20);
        py.Name="P";
        py.Text = "";
        py.Location = new Point(80,8);
        py.Size = new Size(40,20);
        p2x.Name = "P2";
        p2x.Text = "";
        p2x.Location = new Point(30,38);
        p2x.Size = new Size(40,20);
        p2y.Name = "P2";
        p2y.Text = "";
        p2y.Location = new Point(80,38);
        p2y.Size = new Size(40,20);
        
        ergebns.Name = "Ergebnis";
        ergebns.Text = "Berechnen";
        ergebns.Location = new Point(200,8);
        ergebns.Click += new EventHandler(mittelpunkt);
        
        px.Controls.Add(px);
        py.Controls.Add(py);
        p2x.Controls.Add(p2x);
        p2y.Controls.Add(p2y);
        p.Controls.Add(p);
        m.Controls.Add(m);
        p2.Controls.Add(p2);
        ergebns.Controls.Add(ergebns);
     }
     private void ergebns_click(object sender, EventArgs e){ // Wenn die Vektoraddition ausgeführt werden soll
       try{
         string v1_x = v1x_koo.Text;string v1_y = v1y_koo.Text;
         string v2_x = v2x_koo.Text;string v2_y = v2y_koo.Text;
         decimal v1x = Convert.ToDecimal(v1_x);decimal v1y = Convert.ToDecimal(v1_y);
         decimal v2x = Convert.ToDecimal(v2_x);decimal v2y = Convert.ToDecimal(v2_y);
         decimal x = 0;decimal y = 0;
       
         x = (v1x + v2x);
         y = (v1y + v2y);
       
         ergebnis.Text = x.ToString();
         ergebn_y.Text = y.ToString();
       }catch (Exception ex){
         MessageBox.Show(ex.Message);
       }
     }
     private void spitze_berechnen(object sender, EventArgs e){ // Wenn ein Punkt berechnet werden soll
       try{
         Console.Write("Berechne Punkt ...\n");
         decimal p_x = Convert.ToDecimal(px.Text), p_y = Convert.ToDecimal(py.Text);
         decimal v_x = Convert.ToDecimal(v11_koo.Text), v_y = Convert.ToDecimal(v12_koo.Text);
         decimal x2, y2;
         
         if(gegenvektor.Checked == true){
           x2 = p_x - v_x;
           y2 = p_y - v_y;
         }else{
           x2 = v_x + p_x;
           y2 = v_y + p_y;
         }
         
         erg_spz1.Text = x2.ToString();
         erg_spz2.Text = y2.ToString();
       }catch (Exception ex){
         MessageBox.Show(ex.Message);
       }
     }
     private void mittelpunkt(object sender, EventArgs e){
       try{
         decimal p_x = Convert.ToDecimal(px.Text);decimal p_y = Convert.ToDecimal(py.Text);
         decimal p2_x = Convert.ToDecimal(p2x.Text);decimal p2_y = Convert.ToDecimal(p2y.Text);
         decimal m_x, m_y;
         
         m_x = (p_x + p2_x)/2;
         m_y = (p_y + p2_y)/2;
         
         m.Text = "M( " + m_x.ToString() + " | " + m_y.ToString() + " )";
       }catch (Exception ex){
         MessageBox.Show(ex.Message);
       }
     }
}
}
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 15.02.10 12:19 
Wenn du die DLL auch in C# erzeugst, brauchst du doch gar kein DllImport, da reicht es, wenn du die DLL in den Projektreferenzen hinzufügst. Dann kannst du direkt mit den Klassen usw. daraus arbeiten, ggf. musst du noch den namespace bei using ergänzen, wenn es ein anderer ist.

Selbst habe ich das zwar noch nicht gemacht, aber das hatte ich glaube ich so mal gelesen.

Der Grund für den Fehler dürfte sein, dass eine in C# erstellte DLL die Funktionen nicht exportiert. Wie auch, sie gehören ja zu einer Klasse.

// EDIT:
www.codeguru.com/csh...es/article.php/c4239
mbuettner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 2000
C#, Plainedit; PHP, Weaverslave
BeitragVerfasst: Mo 15.02.10 12:34 
The type or namespace "vektoren" can't be found. (Are you missing a assembly reference?)

:P Hat sich was mit Namespaces.
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
using System;
using System.Drawing;
using System.Windows.Forms;
//using System.Runtime.InteropServices; 
using vektoren;

namespace Programm{
  public class SteuerelementeForm : System.Windows.Forms.Form
  {
     /*[DllImport("vektoren.dll")]
     extern static void vektoradditionMenu_Click(object sender, EventArgs e);
     [DllImport("vektoren.dll")]
     extern static void spitzeberechnenMenu_Click(object sender, EventArgs e);
     [DllImport("vektoren.dll")]
     extern static void mittelp(object sender, EventArgs e);*/

     
    private MainMenu mainMenu;
    private MenuItem vektoradditionMenu, vektoren;
    private MenuItem spitzeberechnenMenu, mittelpunkt_Menu;
    private MenuItem beendenMenu, gleichungen;
    private MenuItem helpMenu, ungleichungen, gleichungen2;
    
    public SteuerelementeForm()
    {
       Name = "VektorForm";
       Text = "Mathe"//Titel Text
       Font = new Font("Arial"9F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0))); //Schriftart
       FormBorderStyle = FormBorderStyle.FixedDialog;
       Location = new Point(0,0);
       Size = new Size(500,300);
       Komponenten();
     }
     private void Komponenten() // Menü initialisieren
     {
       mainMenu = new MainMenu();
       vektoren = new MenuItem();
       vektoradditionMenu = new MenuItem();
       spitzeberechnenMenu = new MenuItem();
       gleichungen2 = new MenuItem();
       ungleichungen = new MenuItem();
       gleichungen = new MenuItem();
       beendenMenu = new MenuItem();
       helpMenu = new MenuItem();
       mittelpunkt_Menu = new MenuItem();
       
       vektoren.Index = 0;
       vektoren.Text = "Vektoren";  
       gleichungen.Index = 1;
       gleichungen.Text = "Gleichungen";
       
       gleichungen2.Index = 0;
       gleichungen2.Text = "Gleichungen";
       ungleichungen.Index = 1;
       ungleichungen.Text = "Ungleichungen";
       
       mittelpunkt_Menu.Index = 2;
       mittelpunkt_Menu.Text = "Mittelpunkt";
       mittelpunkt_Menu.Click += new EventHandler(mittelp);
       
       helpMenu.Index = 3;
       helpMenu.Text = "?";
       helpMenu.Click += new EventHandler(help_click);
       
       beendenMenu.Index = 2;
       beendenMenu.Text = "Beenden";
       beendenMenu.Click += new EventHandler(beendenMenu_Click);
       
       spitzeberechnenMenu.Index = 1;
       spitzeberechnenMenu.Text = "Punkt berechnen";
       spitzeberechnenMenu.Click += new EventHandler(spitzeberechnenMenu_Click);   
       
       vektoradditionMenu.Index = 0;
       vektoradditionMenu.Text = "Vektoraddition";
       vektoradditionMenu.Click += new EventHandler(vektoradditionMenu_Click);
       
       mainMenu.MenuItems.Add(vektoren);
       vektoren.MenuItems.Add(vektoradditionMenu);
       vektoren.MenuItems.Add(spitzeberechnenMenu);
       vektoren.MenuItems.Add(mittelpunkt_Menu);
       mainMenu.MenuItems.Add(gleichungen);
       gleichungen.MenuItems.Add(gleichungen2);
       gleichungen.MenuItems.Add(ungleichungen);
       mainMenu.MenuItems.Add(beendenMenu);
       mainMenu.MenuItems.Add(helpMenu);
       
       Menu = mainMenu;
     }
     public static void Main() // Hauptteil ("Main") des Programms
     {
       /*vektoren = new vektoren();*/
        Application.Run(new SteuerelementeForm()); // Fenster initialisieren
     }
     private void beendenMenu_Click(object sender, EventArgs e){ // Wenn auf Beenden geklickt wurde
       Close(); // dann schließe Fenster
     }
     private void help_click(object sender, EventArgs e){
       MessageBox.Show("Ein Programm für Vektoren und Gleichungen.\nGeschrieben in C# \n© by Markus Büttner, 2010");
     }
  }
}
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 15.02.10 12:37 
Hast du die Referenz in den Projektreferenzen hinzugefügt?

Und ansonsten hoffe ich mal, dass sich andere dazu äußern, die das schonmal gemacht haben. :mrgreen:
Ich habe nämlich leider gerade nicht die Zeit es selbst auszuprobieren. :(
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 15.02.10 13:41 
Generell würde ich mich dafür interessieren was du überhaupt machen willst. Ich vermute die Funktionen gibt es auch als .NET Assembly. Dann kannst du dir diesen Kram sparen.

Gruß Daniel
mbuettner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 2000
C#, Plainedit; PHP, Weaverslave
BeitragVerfasst: Mo 15.02.10 16:27 
Hallo,

wenn ich mittels csc /t:winexe /r:q:\c#\eigene\vektoren\vektoren.dll q:\c#\eigene\vektoren\main.cs
den Compiler aufrufe, dann meldet er:
The name 'mittelp' does not exists in the current context
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices; 
using vektoren;

namespace Programm{
  public class SteuerelementeForm : System.Windows.Forms.Form
  {
     /*[DllImport("vektoren.dll")]
     extern static void vektoradditionMenu_Click(object sender, EventArgs e);
     [DllImport("vektoren.dll")]
     extern static void spitzeberechnenMenu_Click(object sender, EventArgs e);
     [DllImport("vektoren.dll")]
     extern static void mittelp(object sender, EventArgs e);*/

     
    private MainMenu mainMenu;
    private MenuItem vektoradditionMenu, vektoren;
    private MenuItem spitzeberechnenMenu, mittelpunkt_Menu;
    private MenuItem beendenMenu, gleichungen;
    private MenuItem helpMenu, ungleichungen, gleichungen2;
    
    public SteuerelementeForm()
    {
       Name = "VektorForm";
       Text = "Mathe v2.0"//Titel Text
       Font = new Font("Arial"9F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0))); //Schriftart
       FormBorderStyle = FormBorderStyle.FixedDialog;
       Location = new Point(0,0);
       Size = new Size(500,300);
       Komponenten();
     }
     private void Komponenten() // Menü initialisieren
     {
       mainMenu = new MainMenu();
       vektoren = new MenuItem();
       vektoradditionMenu = new MenuItem();
       spitzeberechnenMenu = new MenuItem();
       gleichungen2 = new MenuItem();
       ungleichungen = new MenuItem();
       gleichungen = new MenuItem();
       beendenMenu = new MenuItem();
       helpMenu = new MenuItem();
       mittelpunkt_Menu = new MenuItem();
       
       vektoren.Index = 0;
       vektoren.Text = "Vektoren";  
       gleichungen.Index = 1;
       gleichungen.Text = "Gleichungen";
       
       gleichungen2.Index = 0;
       gleichungen2.Text = "Gleichungen";
       ungleichungen.Index = 1;
       ungleichungen.Text = "Ungleichungen";
       
       mittelpunkt_Menu.Index = 2;
       mittelpunkt_Menu.Text = "Mittelpunkt";
       mittelpunkt_Menu.Click += new EventHandler(mittelp);
       
       helpMenu.Index = 3;
       helpMenu.Text = "?";
       helpMenu.Click += new EventHandler(help_click);
       
       beendenMenu.Index = 2;
       beendenMenu.Text = "Beenden";
       beendenMenu.Click += new EventHandler(beendenMenu_Click);
       
       spitzeberechnenMenu.Index = 1;
       spitzeberechnenMenu.Text = "Punkt berechnen";
       spitzeberechnenMenu.Click += new EventHandler(spitzeberechnenMenu_Click);   
       
       vektoradditionMenu.Index = 0;
       vektoradditionMenu.Text = "Vektoraddition";
       vektoradditionMenu.Click += new EventHandler(vektoradditionMenu_Click);
       
       mainMenu.MenuItems.Add(vektoren);
       vektoren.MenuItems.Add(vektoradditionMenu);
       vektoren.MenuItems.Add(spitzeberechnenMenu);
       vektoren.MenuItems.Add(mittelpunkt_Menu);
       mainMenu.MenuItems.Add(gleichungen);
       gleichungen.MenuItems.Add(gleichungen2);
       gleichungen.MenuItems.Add(ungleichungen);
       mainMenu.MenuItems.Add(beendenMenu);
       mainMenu.MenuItems.Add(helpMenu);
       
       Menu = mainMenu;
     }
     public static void Main() // Hauptteil ("Main") des Programms
     {
        Application.Run(new SteuerelementeForm()); // Fenster initialisieren
     }
     private void beendenMenu_Click(object sender, EventArgs e){ // Wenn auf Beenden geklickt wurde
       Close(); // dann schließe Fenster
     }
     private void help_click(object sender, EventArgs e){
       MessageBox.Show("Ein Programm für Vektoren und Gleichungen.\nGeschrieben in C# \n© by Markus Büttner, 2010");
     }
  }
}