如何为mingw32指定dll onload函数?
发布时间:2020-12-14 05:46:20 所属栏目:Windows 来源:网络整理
导读:我可以使用mingw正确编译DLL并执行导出/导入操作.我正在寻找的是正确定义dll onload功能,就像在MS VC产品中一样.谷歌没有发现任何事情.任何人有任何想法或教程的链接? 解决方法 好吧,经过一些摆弄……所以它正在发挥作用.对于其他任何有问题的人来说,这是.
我可以使用mingw正确编译DLL并执行导出/导入操作.我正在寻找的是正确定义dll onload功能,就像在MS VC产品中一样.谷歌没有发现任何事情.任何人有任何想法或教程的链接?
解决方法
好吧,经过一些摆弄……所以它正在发挥作用.对于其他任何有问题的人来说,这是.我的问题与编译无关,而不是动态加载.这是几个教程/问题/方法的混搭让我达到了这一点.
dll.c #include <stdio.h> #include <windows.h> #include "dll.h" //extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD Reason,LPVOID LPV) { //This one was only necessary if you were using a C++ compiler BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: // Code to run when the DLL is loaded printf ("Load working...n"); break; case DLL_PROCESS_DETACH: // Code to run when the DLL is freed printf ("Unload working...n"); break; case DLL_THREAD_ATTACH: // Code to run when a thread is created during the DLL's lifetime printf ("ThreadLoad working...n"); break; case DLL_THREAD_DETACH: // Code to run when a thread ends normally. printf ("ThreadUnload working...n"); break; } return TRUE; } EXPORT void hello(void) { printf ("Hellon"); } dll.h #ifndef DLL_H_ #define DLL_H_ #ifdef BUILD_DLL /* DLL export */ #define EXPORT __declspec(dllexport) #else /* EXE import */ #define EXPORT __declspec(dllimport) #endif EXPORT void hello(void); #endif /* DLL_H_ */ 你好? #include <windows.h> #include <stdio.h> int main () { /*Typedef the hello function*/ typedef void (*pfunc)(); /*Windows handle*/ HANDLE hdll; /*A pointer to a function*/ pfunc hello; /*LoadLibrary*/ hdll = LoadLibrary("message.dll"); /*GetProcAddress*/ hello = (pfunc)GetProcAddress(hdll,"hello"); /*Call the function*/ hello(); return 0; } 编译时 gcc -c -DBUILD_DLL dll.c gcc -shared -o message.dll dll.o -Wl,--out-implib,libmessage.a gcc -c hello.c gcc -o hello.exe hello.o message.dll 产生预期的产量 Load working... Hello Unload working... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在安装应用程序但您没有帐户时以访客身份加入Lync 2013
- windows-xp – VirtualBox Snapshot – 如何阻止它们成长并
- windows-8 – Windows 8.1应用程序内搜索控制和搜索窗格(搜
- 远程访问Windows Vista到Mac OSX?
- 为Windows 2012 CA生成新的自签名CA.
- Windows Phone 7搜索按钮
- 批处理文件 – for for循环中的多个do命令:将字符串回送到
- wcf – Windows 7中的kerberos身份验证
- 在Windows上使用perl脚本而不安装ActivePerl?
- windows 10 安装和使用中5个常见问题
推荐文章
站长推荐
- active-directory – 将新服务器添加到服务器管理
- windows-xp – 分页池内存或非分页池内存?? (Win
- 如何在Windows上实现Android的倾斜效果?
- hyper-v – 在Windows 7计算机上从Server Manage
- Windows工作流(WF):将一个活动的输出作为序列中
- 有没有任何免费的Windows Perl IDE调试?
- windows – Window的命令行(cmd.exe)命令的最大长
- azure – Microsoft Graph REST API无效的客户端
- Windows下Django项目搭建流程
- windows – IE6和IE7 Standalone:它们以不同的方
热点阅读