我有一个类似于这个问题的疑问。我正在尝试编译一个类似于Visual Studio的Windows DLL,只是使用CLion和CMake。我已经尝试了问题中的答案,以及这里显示的步骤,但在注入时仍然会出现错误。
我的dll代码非常简单,在Visual Studio中编译的类似dll可以正常工作:
我的dll代码非常简单,在Visual Studio中编译的类似dll可以正常工作:
#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;
}
另外,这是我在 CMakeLists.txt
中尝试的内容:抱歉,PROJECT_NAME 和 MODULE 之间应该有一个空格
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)
add_library(PROJECT_NAMEMODULE SHARED main.cpp)
,否则将创建一个静态库。 - vre