Win32, C#, DLL
-
Hallo,
1)ich erzeuge mit VS 2002 ein Win32 Project(gennant Win32), und in Win32.cpp:__declspec(dllexport) public int Do(int i) { return i; }
2)neues PJ: C# Console PJ, und in Client.cs:
[DllImport("Win32.dll")] public static extern int Do(int i); public static int Main() { Console.WriteLine(Do(3)); return 1; } }
3)Ich kopiere Win32.dll und Win32.lib in dem Release Verzeichnis vom Client
4)Ich führe Client.exe aus, aber ich bekomme immer die Fehlermeldung:
Unhandled Exception: System.EntryPointNotFoundException: Unable to find an entry point named Do in
DLL Win32.dll.
at CsClient.Client.Do(Int32 i)
at CsClient.Client.Main()
Hat Jemand eine Ahnung, ich bin schon beim Verzweifeln
-
hast du deine funktion auch in der def-datei stehen?
-
dEUs
also ich habe folgende .def erstellt:LIBRARY "nix" DESCRIPTION 'nix is a library' EXPORTS Do
aber es hat nicht geklappt, außerdem habe ich gelesen, daß man solche Dateien nicht braucht, wenn man die Funktionen mit __declspec(dllexport) exportiert.
Das kömische ist, ich habe das Example auf der MSDN Seite gemacht, aber ich bekomme die gleiche Fehlermeldung
[url] http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfExternPG.asp [/url]
Nach ein paar Versuchen hat es geklappt, indem ich einfach extern "C" eingefügt habe vor dem __declspec, weiss Jemand was das macht ??Grüße
-
Guck mal ob du Do@4 aufrufen kannst. Der MSVC hängt gerne an die Funktion ein @ und die Zahl der bytes die die Parameter belegen ran
-
Original erstellt von TriPhoenix:
Guck mal ob du Do@4 aufrufen kannst. Der MSVC hängt gerne an die Funktion ein @ und die Zahl der bytes die die Parameter belegen randas ging nicht, der compiler läßt es nicht zu
-