使用DllMain函数(MinGW+CMake)创建一个Windows共享库
Create a Windows shared library with DllMain function (MinGW + CMake)
如果已经有人问我这个问题,我很抱歉,但我已经努力寻找答案好几个星期了。
在共享库方面,我不是特别胜任,但是,使用CLion RC 1.0
(及其集成的CMake)和MinGW
,我无法创建具有DllMain
功能的功能性Windows DLL
。我确实创建了一个.dll
文件,但很快就发现该符号没有正确导出。
简单地说,我希望看到与Visual Studio的默认Win32 DLL模板相同或相似的行为。
CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
project(DllMainTest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_library(DllMainTest SHARED ${SOURCE_FILES})
main.cpp
#include <windows.h>
extern "C" BOOL WINAPI DllMain(
HINSTANCE hinstDLL,
DWORD fdwReason,
LPVOID lpvReserved
) {
switch(fdwReason) {
case DLL_PROCESS_ATTACH:
MessageBox(NULL, "It works!", "Status", MB_OK);
case DLL_PROCESS_DETACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
default:
break;
}
return TRUE;
}
编辑:这个DLL的目的是将它注入32位进程,并在加载时显示MessageBox。
查看add_library文档:http://www.cmake.org/cmake/help/v3.0/command/add_library.html
"STATIC库是链接其他目标时使用的对象文件档案。SHARED库是动态链接的,并在运行时加载。MODULE库是不链接到其他目标的插件,但可以使用类似dlopen的功能在运行时动态加载。"
add_library(DllMainTest MODULE ${SOURCE_FILES})
应按预期导出DllMain。
相关文章:
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 有没有办法让我编写一个可以在Windows和Linux上运行的命令行游戏?
- 互斥,Windows 10,c ++,在一个线程上获取,在另一个线程上发布
- 如何创建一个windows visual Studio C++/CX NOT UWP
- 是否有一个Windows驱动程序函数可以执行Windows文件api SeFileAttributes的等效功能
- 无法使我的第一个Windows OpenGL窗口抬起并运行
- 使用DllMain函数(MinGW+CMake)创建一个Windows共享库
- 如何将消息从一个 Windows 控制台应用程序发送到另一个应用程序
- 如何制作一个Windows程序,用于使用c ++将文件写入cd
- 引用另一个 Windows Phone 运行时组件项目中一个 Windows Phone 运行时组件项目中的C++类
- 如何将数据从一个windows应用程序复制到另一个
- 是否可以编写一个windows应用程序,当在另一个窗口应用程序中选择文本时,该应用程序会收到通知
- 我需要一个Windows 8 WinRT应用程序来与用C编写的独立应用程序通信
- 有可能用cygwin编译一个windows服务吗?
- 是否有一个Windows c++ API来验证Windows用户名/域名是本地机器上的有效帐户(没有密码)
- 是否有一个Windows API来检测USB过流
- Visual studio项目模板,在c++中创建一个windows服务
- 我如何得到一个windows文本winapi c++
- 如何在C++中可靠地检查一个Windows进程是否是另一个进程的父进程
- 我可以为那些知道互斥锁密码的进程全局创建一个Windows互斥锁吗?