problem mit dll auf anderem computer
-
hallo,
ich habe eine dll geschrieben, die eine Funktion exportiert. das geht auch alles soweit, auf meinem pc. doch wenn ich die dll auf einen anderen pc laden will, wird die erst garnicht geladen. Ich habe das um Zeit zu sparen erst mit dem VBA-Editor unter Word probiert. Also der Pfad usw passt.
Habe nun doch eine Konsolenanwendung geschrieben, die mir das den Wert was LoadLibrary zurückgibt, ausgibt. Aber selbst die Konsolenanwendung kann auf keinen anderen PC gestartet werden (Windows XP).
Ich programmiere auch unter XP und benutze das Visual Studio 2008.
An was könnte das liegen?? Bin da momentan etwas überfragt..oder hat das was mit den Manifesten zu tun?Die Konsolenanwendung sieht folgendermaßen aus:
typedef int (__cdecl *PDLLFUNC)(LPCSTR lpszGeraeteKlassenName, LPCSTR lpszBezeichnung); int _tmain(int argc, _TCHAR* argv[]) { HMODULE hMod; PDLLFUNC pFunk; hMod = LoadLibrary("gmdll.dll"); if(hMod) { printf("Adresse von gmdll: %d\r\n",(DWORD)hMod); pFunk = (PDLLFUNC)GetProcAddress(hMod,"FindeAktivesGeraet"); printf("Funktionsadresse: %d",(DWORD)pFunk); FreeLibrary(hMod); } return 0; }
-
du musst das ganze statisch linken, d.h. die C++ Runtime in das programm
reinpacken. stadardmäßig ist die als dll gelinkt, was natürlich fehlschlgt
wenn der andere pc die nicht hat. oder du lieferst die dlls mit
google -> vc redist erster treffereinstellung:
projekt -> eingenschaften -> c++ -> codegenerierung -> laufzeitbibliotheken -> multithread
-
Lies dir das hier durch, dann ist alles klar.
http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/
-
hallo,
Danke für die Hilfe!
Hat nun funktioniert!mfg