最近用MinGW编译一个DLL,遇到几个小问题,记录一下

1MinGW编译dll以及静态链接pthread,MinGW编译dll以及静态链接pthreadDllMain不执行的问题

DLL写好以后,功能测试ok,但是发现DllMain未执行,导致代码里的初始化和析构均未能执行,查了下生成的dll,发现由于是c++编译,导致DllMain被改名了,解决方法加上extern "C"

2, 静态链接pthreadGC2

用测试程序测试的时候,提示未找到pthreadGC2.dll,于是在MinGW的目录下搜索pthread,发现有个 pthreads-win32-README的文档,里面详细讲述了如何静态链接pthread,概括步骤如下:

编译时定义PTW32_STATIC_LIB宏

链接pthreadGC2-static和ws2_32库(不需要链接pthread)

在调用pthread任何函数之前调用pthread_win32_process_attach_np()初始化(DLL在DLL_PROCESS_ATTACH分支下),结束后调用pthread_win32_process_detach_np()(DLL在下DLL_PROCESS_DETACH)

 3,如果在exe里也用到了多线程,重复2的步骤

 

 

相关文章:

  • 2021-11-03
  • 2022-12-23
  • 2021-12-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-30
猜你喜欢
  • 2021-07-28
  • 2021-08-21
  • 2021-11-21
  • 2021-06-23
  • 2021-07-16
  • 2021-09-27
  • 2021-10-24
相关资源
相似解决方案