MinGW编译dll以及静态链接pthread

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

1,DllMain不执行的问题

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的步骤

 

 

你可能感兴趣的:(pthread)