pthread静态链接

时间:2012-03-07 11:01:26

标签: visual-studio-2008 visual-c++ dll pthreads static-linking

我有一个小的C ++ Win32命令行应用程序,使用VS2008构建,使用pthreads。我想将应用程序作为独立的可执行文件分发,因此请静态链接到pthreads:在链接器中 - >在项目属性的输入页面中,我已将pthreadVC2.lib添加到Additional Dependencies。该项目构建,但可执行文件仍然需要pthreadVC2.dll才能运行,尽管我静态链接到lib文件。

Depends.exe确实将pthreadVC2.dll列为依赖项。

知道为什么会这样吗?感谢

汤姆

1 个答案:

答案 0 :(得分:4)

如果要静态链接,则需要链接到静态库。 pthreadVC2.lib文件是DLL的存根,而不是静态库。

请注意,要使用静态库,必须遵循静态附件的规则。例如,您必须致电pthread_win32_process_attach_np。您将需要调用Windows DLL方案通常为您执行的库(在进程附加,线程附加,线程分离和进程分离)。

修改:根据该链接中的最新文档,可能不需要此步骤:

  

从版本2.9.0开始,使用MSC或GCC构建的静态库包括RT钩子   这将在启动/退出时自动调用pthread_win32_process _ * _ np例程   应用