Ich habe 2 Programme, die ein Projekt teilen, in dem eine API DLL verwendet wird, um Aktionen für Dateien in einem anderen Verzeichnis auszuführen. Das Problem, das ich habe, ist, dass dieser Code in einem Projekt arbeitet, aber in dem anderes es nicht:Warum funktioniert dieser explizit verknüpfte DLL-Delegat in einem Programm, aber nicht in einem anderen Programm?
moduleHandle = LoadLibrary(“api.dll”)
Früher, das Programm, das hier an die API-DLL verbinden, so nach dem Vergleich der Process Monitor Protokollen fehlgeschlagen fehl von beiden kopierte ich einige DLLs in das gleiche Verzeichnis wie es. Es ist dann gelungen, und die Werte von modulehandle sind jetzt in beiden Programmen gleich. Next:
methodPointer = GetProcAddress(moduleHandle, "NameOfSomeFunction")
delegateForSomeFunction = Marshal.GetDelegateForFunctionPointer(methodPointer, GetType(SomeFunctionType))
Wenn wir zum delegateForSomeFunction bekommen, kann ich sehen, dass der Wert von _methodPtr in ihnen von einem Programm zum anderen unterscheidet. Dann, wenn wir den Delegierten aufrufen:
In einem Programm schlägt dies einfach still. Ich bin etwas verloren, was das weitere Vorgehen angeht. Was soll ich tun, um dies weiter zu untersuchen und wie kann ich es zum Laufen bringen?
Ich laufe dies auf Debug in Visual Studio 2013 und das Projekt ist in .NET 4.