我有一个小的C ++ Win32命令行应用程序,使用VS2008构建,使用pthreads。我想将应用程序作为独立的可执行文件分发,因此请静态链接到pthreads:在链接器中 - >在项目属性的输入页面中,我已将pthreadVC2.lib添加到Additional Dependencies。该项目构建,但可执行文件仍然需要pthreadVC2.dll才能运行,尽管我静态链接到lib文件。
Depends.exe确实将pthreadVC2.dll列为依赖项。
知道为什么会这样吗?感谢
汤姆
答案 0 :(得分:4)
如果要静态链接,则需要链接到静态库。 pthreadVC2.lib
文件是DLL的存根,而不是静态库。
请注意,要使用静态库,必须遵循静态附件的规则。例如,您必须致电pthread_win32_process_attach_np。您将需要调用Windows DLL方案通常为您执行的库(在进程附加,线程附加,线程分离和进程分离)。
修改:根据该链接中的最新文档,可能不需要此步骤:
从版本2.9.0开始,使用MSC或GCC构建的静态库包括RT钩子 这将在启动/退出时自动调用pthread_win32_process _ * _ np例程 应用