gpt4 book ai didi

c - 如何为 Visual Studio 2005 安装 pthread_win32(Windows pthread/posix 线程库)?

转载 作者:行者123 更新时间:2023-11-30 17:38:59 25 4
gpt4 key购买 nike

需要明确的是 - 我已经在互联网的深处进行了搜索,并返回了有关如何执行此操作的信息

我正在寻求设置 pthread_Win32 以与 Visual Studio 2005 配合使用的帮助。我正在使用 C 进行编程,并且需要使用 pthread.h 编写许多多线程作业。然而,由于 pthread 是 unix 原生的,所以我必须编写所有代码,将其通过 ftp 传输,然后 ssh 到我的类的远程 unix 系统来运行它。它使得开发时间变得更长,而且效率极其低下。我希望(最重要的是)能够在我的 win32 机器上运行它,这样我就可以在 Visual Studio 中进行开发,就像我已经做了相当长一段时间的那样。

我已将 pthread.lib 文件和 pthread.h 文件安装到各自的 lib/header 目录中,所有其他文件都位于其中。另一方面,DLL(实际的库),我已放置在 c:\windows\system32 中。我尝试将 DLL 添加为依赖项(右键单击项目 -> 引用 -> 添加新引用),但正如其他人所说,我得到的只是一个空白对话框,没有添加任何 DLL 文件或任何内容的选项。它似乎可以识别头文件,但编译时出现以下错误:

1>正在链接...

1>main.obj:错误LNK2019:无法解析的外部符号_imp函数_main中引用的_pthread_join

1>main.obj:错误LNK2019:无法解析的外部符号_imp函数_main中引用的_pthread_create

1>main.obj:错误LNK2019:无法解析的外部符号_imp函数_fcount中引用的_pthread_exit

根据我的研究,我确定这是 DLL 的问题,并且我假设它找不到我在代码中引用的函数的定义。我到处搜索,似乎找不到任何方法来克服这个问题。我已将 lib/头文件的目录添加到链接器中,以防万一,但这并没有解决问题。我需要在 Visual Studio 中做一些事情来指定我需要 pthreadVC2.dll 作为项目依赖项 - 目前看来这是不可能的(并且非常令人沮丧)。

有什么至理名言吗?

非常感谢

最佳答案

我最近也遇到过这个问题。如果 pthread.h 包含在动态链接模式中,则似乎会在函数名称前添加 __imp__ 前缀。只需在包含 pthread.h 之前将 PTW32_STATIC_LIB 定义添加到您的项目或源代码中即可解决问题。

#define PTW32_STATIC_LIB
#include <pthread.h>

尽管如此,我还没有完全结束,因为 Visual Studio 现在尝试链接 _[FuncName] 而不是 [FuncName]

在 Visual Studio 中,无论您要静态链接 (.lib) 还是动态链接 (.dll),函数的声明方式似乎都不同。

要定义动态链接的函数:

__declspec (dllimport) int myFunc(int myArgs) ;

要定义您要导出以进行动态链接的函数:

__declspec (dllexport) int myFunc(int myArgs) ;

最简单的是,定义一个静态链接的函数:

int myFunc(int myArgs) ;

[编辑]

我正在进行调查并浏览了 this在微软帮助中心。似乎为了避免 _[FuncName] 效果,需要通过以下方式定义静态链接库函数:

int __cdecl myFunc(int MyArgs) ;

关于c - 如何为 Visual Studio 2005 安装 pthread_win32(Windows pthread/posix 线程库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21991618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com