MFC-Dll in Makefile-Projekt einbinden
-
Hallo allerseits,
ich möchte von Java aus auf die Funktionen einer Dll zugreifen, die in VS .NET 2003 mit dem Projekt-Wizard als MFC-Dll erstellt wurde.
Dazu habe ich mit javah einen Header für eine Wrapper-dll für diese MFC-Dll erzeugt und dann eine cpp-Datei dazu geschrieben.
Für diesen Wrapper habe ich im Visual Studio ein Makefile-Projekt erstellt.Und jetzt weiß ich nicht genau, wie man die MFC-Dll in die Wrapper-Dll einbindet.
Die Header-Datei habe ich in die Wrapper.cpp included und in die Buildbefehlszeile des Projekts am Ende " ... /link mymfc.dll" eingetragen.Beim Übersetzen kommen dann Fehlermeldungen
"error LNK2019: Nicht aufgel÷stes externes Symbol ..."
für die Klasse der MFC-Dll und die aufgerufenen Funktionen sowie
"nafxcw.lib(appcore.obj) : error LNK2001: Nichtaufgel÷stes externes Symbol ___argv
nafxcw.lib(appcore.obj) : error LNK2001: Nichtaufgel÷stes externes Symbol ___argc
nafxcw.lib(filelist.obj) : error LNK2001: Nichtaufgel÷stes externes Symbol __mbctype
nafxcw.lib(apphelp.obj) : error LNK2001: Nichtaufgel÷stes externes Symbol __mbctype
"Was kann ich tun, damit sich die Wrapper.dll übersetzen läßt?
Ist das mit dem Makefile-Projekt überhaupt richtig?
Oder müssen in die MFC-Dll noch dllexport- oder ähnlich Einträge rein?Die MFC-Dll ist außer ein paar Funktion der App-Klasse noch so, wie sie der Projekt-Wizard geschaffen hat.
Für sachdienliche Hinweise bin ich sehr dankbar.
Schönen Abend noch,
Octopus
-
Octopus schrieb:
Was kann ich tun, damit sich die Wrapper.dll übersetzen läßt?
Ist das mit dem Makefile-Projekt überhaupt richtig?
Oder müssen in die MFC-Dll noch dllexport- oder ähnlich Einträge rein?Genau so ist es Octopus. Falls ich deine Beschreibung richtig verstanden habe, hast du den Fehler bereits selbst gefunden. Du musst die Funktionen mit dllexport noch exportieren, auch über den dllwrapper hinaus müssen die Definierungen der Funktionen bekannt gemacht werden.
codeman
-
Danke codeman,
die LNK2019 errors sind damit beseitigt, der dllwrapper kennt also jetzt die Klasse aus der MFC-dll.Bleiben immer noch die Fehler
nafxcw.lib(appcore.obj) : error LNK2001: Nichtaufgel÷stes externes Symbol ___argv
nafxcw.lib(appcore.obj) : error LNK2001: Nichtaufgel÷stes externes Symbol ___argc
nafxcw.lib(filelist.obj) : error LNK2001: Nichtaufgel÷stes externes Symbol __mbctype
nafxcw.lib(apphelp.obj) : error LNK2001: Nichtaufgel÷stes externes Symbol __mbctype
wraptest.dll : fatal error LNK1120: 3 unaufgel÷ste externe Verweise
Project : error PRJ0019: Ein Tool hat einen Fehlercode aus folgender Quelle zurückgegeben: "Die Makefile-Projektaktionen werden ausgeführt."Woran kann das liegen?
Meine Buildbefehlszeile sieht übrigens so aus:cl -IC:\Programme\Java\jdk1.5.0_06\include -IC:\Programme\Java\jdk1.5.0_06\include\win32 -MD -LD wraptest.cpp -Fewraptest.dll
Ist da vielleicht noch was rauszuholen?
Gruß, Octopus