Ich habe eine Frage ähnlich wie this one. Ich versuche eine DLL für Windows ähnlich wie Visual Studio zu kompilieren, außer mit CLion und CMake. Ich habe versucht, die Antwort in der Frage, sowie die Schritte gezeigt here, aber ich bekomme immer noch einen Fehler beim injizieren.Build Windows DllMain DLL mit CMake
Mein dll-Code ist sehr einfach, eine ähnliche DLL in Visual Studio kompilierte funktioniert:
#include <windows.h>
#include <iostream>
using namespace std;
void hello() {
AllocConsole();
freopen("CONOUT$", "w", stdout);
cout << "Hello, World!" << endl;
}
bool __stdcall DllMain(HMODULE /*module*/, DWORD reason, LPVOID /*reserved*/) {
if (reason == DLL_PROCESS_ATTACH) hello();
return true;
}
Auch hier ist das, was ich in CMakeLists.txt
versucht: Sorry, es gibt einen Raum zwischen PROJECT_NAME und MODULE sein sollte
cmake_minimum_required(VERSION 3.9)
project(PROJECT_NAME)
include (GenerateExportHeader)
set(CMAKE_CXX_STANDARD 17)
add_library(PROJECT_NAME MODULE main.cpp)
set_target_properties(PROJECT_NAME PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
GENERATE_EXPORT_HEADER(PROJECT_NAME
BASE_NAME PROJECT_NAME
EXPORT_MACRO_NAME PROJECT_NAME_EXPORT
EXPORT_FILE_NAME PROJECT_NAME_Export.h
STATIC_DEFINE PROJECT_NAME_BUILT_AS_STATIC)
Versuchen Sie, Ihre add_library Anruf GEMEINSAM hinzufügen, das heißt 'add_library (PROJECT_NAMEMODULE GEMEINSAM main.cpp)', weil sonst ein statisches Bibliothek ist erstellt. – vre