Ich habe ein CLion/CMake-Projekt, das eine externe DLL benötigt, A.dll
, die ich in das Projekt lib/
Verzeichnis abgelegt habe. Nach dem Erstellen der ausführbaren Datei, wenn ich die APP.exe
ausführen, kann es die lib/A.dll
nicht finden/verwenden. Wie behebe ich das?Wie findet APP.exe in CLion/CMake unter Windows lib/A.dll, um ausgeführt zu werden?
Antwort
Ich glaube, Sie nicht DLL-Datei zu cmake Datei nicht hinzugefügt dies Quick CMake Tutorial oder CLion and CMake: only building a library without an executable?
Ich bin mir des Tutorials bewusst und habe die .dll hinzugefügt, aber anscheinend habe ich nicht den richtigen Befehl verwendet. Ich habe einen Befehl verwendet, der anscheinend gut im Kompilierungsschritt ist, aber nicht im Laufzeitschritt, z. B. wenn Sie in CLion Run drücken. – gknauth
Ich versuche nicht, eine Bibliothek ohne eine ausführbare Datei zu erstellen. Ich versuche, eine ausführbare Datei auszuführen, die eine externe DLL verwendet. Ich möchte, dass dieses Projekt gefunden wird, wenn ich Ausführen in CLion drücke. – gknauth
ich in der Regel nur D hinzu: /path/to/lib/A.dll auf dem Weg, entweder global durch Bearbeiten Sie die Benutzer- oder Systemumgebungsvariablen, oder erstellen Sie eine kleine Batch-Datei, die den Pfad zusammen mit CMAKE_PREFIX_PATH et al erstellt und dann möglicherweise etwas wie cmake-gui.exe oder devenv.exe erzeugt.
Danke, ich werde mir das anschauen. – gknauth
Wenn Sie import exist lib in cmake fragen, kann dieser Link hilfreich sein. Sie können diesen Code brauchen in Ihrem CMakeList.txt
# Create an IMPORTED library
add_library(A IMPORTED)
# Set IMPORTED_LOCATION *property* for this target
set_target_properties(SimpleAmqpClient PROPERTIES
IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/A.dll)
# Then use library *target* for linking with
target_link_libraries(APP PUBLIC A)
Haben Sie die ausführbare Datei nach dem Bauprozess erfolgreich bewegen? –