Autor |
Beitrag |
mbuettner
      
Beiträge: 16
WIN 2000
C#, Plainedit; PHP, Weaverslave
|
Verfasst: So 14.02.10 22:14
Zitat: | Attribute 'DllImport`is not valid on this declaration type |
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"; Font = new Font("Arial", 9F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0))); FormBorderStyle = FormBorderStyle.FixedDialog; Location = new Point(0,0); Size = new Size(500,300); Komponenten(); } private void Komponenten() { 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() { Application.Run(new SteuerelementeForm()); } private void beendenMenu_Click(object sender, EventArgs e){ Close(); } 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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 15.02.10 09:38
|
|
mbuettner 
      
Beiträge: 16
WIN 2000
C#, Plainedit; PHP, Weaverslave
|
Verfasst: Mo 15.02.10 10:58
Also:
ich will eine Funktion aus der DLL einbinden. Aber wie genau muss ich das machen?
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"; Font = new Font("Arial", 9F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0))); FormBorderStyle = FormBorderStyle.FixedDialog; Location = new Point(0,0); Size = new Size(500,300); Komponenten(); } private void Komponenten() { 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() { Application.Run(new SteuerelementeForm()); } private void beendenMenu_Click(object sender, EventArgs e){ Close(); } 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 16
WIN 2000
C#, Plainedit; PHP, Weaverslave
|
Verfasst: 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.
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"; Font = new Font("Arial", 9F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0))); FormBorderStyle = FormBorderStyle.FixedDialog; Location = new Point(0,0); Size = new Size(500,300); Komponenten(); } private void Komponenten() { 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() { Application.Run(new SteuerelementeForm()); } private void beendenMenu_Click(object sender, EventArgs e){ Close(); } 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 16
WIN 2000
C#, Plainedit; PHP, Weaverslave
|
Verfasst: Mo 15.02.10 12:11
Tja, aber in der DLL ist ganz klar die Funktion vektoraddtitionMenu_Click als public definiert.
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){ 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(90, 8); v1x_koo.Size = new Size(90,20); v1y_koo.Name = "Vektor1_y"; v1y_koo.Text = ""; v1y_koo.Location = new Point(90, 38); v1y_koo.Size = new Size(90,20); v2x_koo.Name = "Vektor2_x"; v2x_koo.Text = ""; v2x_koo.Location = new Point(280, 8); v2x_koo.Size = new Size(90,20); v2y_koo.Name = "v2"; v2y_koo.Text = ""; v2y_koo.Location = new Point(280, 38); 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){ 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(100, 20); v12.Name = "V"; v12.Text = "Vektor 1 (y)"; v12.Location = new Point(10,70); v12.Size = new Size(100, 20); 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(55, 20); 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){ 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){ 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 16
WIN 2000
C#, Plainedit; PHP, Weaverslave
|
Verfasst: Mo 15.02.10 12:34
The type or namespace "vektoren" can't be found. (Are you missing a assembly reference?)
 Hat sich was mit Namespaces.
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 vektoren;
namespace Programm{ public class SteuerelementeForm : System.Windows.Forms.Form { 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"; Font = new Font("Arial", 9F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0))); FormBorderStyle = FormBorderStyle.FixedDialog; Location = new Point(0,0); Size = new Size(500,300); Komponenten(); } private void Komponenten() { 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() { Application.Run(new SteuerelementeForm()); } private void beendenMenu_Click(object sender, EventArgs e){ Close(); } 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
Ich habe nämlich leider gerade nicht die Zeit es selbst auszuprobieren. 
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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 
      
Beiträge: 16
WIN 2000
C#, Plainedit; PHP, Weaverslave
|
Verfasst: 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
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 { 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"; Font = new Font("Arial", 9F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0))); FormBorderStyle = FormBorderStyle.FixedDialog; Location = new Point(0,0); Size = new Size(500,300); Komponenten(); } private void Komponenten() { 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() { Application.Run(new SteuerelementeForm()); } private void beendenMenu_Click(object sender, EventArgs e){ Close(); } 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"); } } } |
|
|
|