"Der Prozedureintrittspunkt ... konnte nicht gefunden werden" in der falschen DLL

8

Ich habe eine DLL aus Haskell Code erstellt und ich rufe diese DLL aus C ++. Meine Anwendung funktioniert einwandfrei, wenn ich sie im Debug-Modus in Visual Studio 2010 ausführe, aber wenn ich ein Release erstelle und es installiere, erhalte ich den Fehler

  

Der Prozedureintrittspunkt LVSpecData_GetGlob konnte nicht in der dynamischen Verbindungsbibliothek SpectrumMath.dll gefunden werden.

SpectrumMath.dll ist meine Haskell-basierte DLL. Das seltsame Ding ist, dass die Funktion LVSpecData_GetGlob nicht in dieser DLL ist - es ist in einer anderen DLL, mit der ich verlinke, und nichts über diese DLL oder die Verwendung meiner Anwendung änderte sich, als ich die Haskell DLL hinzufügte / p>

Diese Fehlermeldung scheint zu sagen, dass Windows verwirrt ist, welche Funktionen in welchen DLLs leben. Was könnte hier schief gehen?

    
bdesham 14.07.2015, 20:00
quelle

2 Antworten

7

Dies scheint ein Fehler im Visual Studio 2010 Release-Modus zu sein (Haskell-DLL-Funktionen werden nicht von einer im Release-Modus erstellten Exe importiert, daher ist die Haskell-DLL nicht geladen, Debug-Importe sind vorhanden und funktionieren einwandfrei).

Das gleiche exe-Projekt, das im Release-Modus mit Visual Studio 2013 Update 4 und Visual Studio 2015 RC erstellt wurde, funktioniert einwandfrei.

    
doqtor 17.07.2015, 23:30
quelle
2

Haben Sie versucht, eine .def-Datei zu verwenden, um Exporte zu definieren? Ссылка

Nachdem Sie es erstellt haben, müssen Sie die Projekteigenschaften Linker- & gt; Input- & gt; Moduldefinitionsdatei

bearbeiten     
Caldur 17.07.2015 10:25
quelle

Tags und Links