VC2019写了一个静态库,静态库内用到了多线程。
单独编译静态库,没有问题。测试程序调用这个静态空时,编译报错:错误 LNK2019 无法解析的外部符号 __imp__pthread_create... 完整错误信息如下:
错误 LNK2019 无法解析的外部符号 __imp__pthread_create,函数 "public: int __thiscall CVDatabase::ExportData(char *,char *,int *,int *,void (__cdecl*)(int *,int *))" (?ExportData@CVDatabase@@QAEHPAD0PAH1P6AX11@Z@Z) 中引用了该符号 VDatabaseLibTest D:\VC_X86\DLL库文件\数据库DLL\DLL_VDatabaseV2.0.1\VDatabaseLibTest D:\VC_X86\DLL库文件\数据库DLL\DLL_VDatabaseV2.0.1\VDatabaseLibTest\VDatabaseLib.lib(CVDatabase.obj) 1
部分代码段如下:
#include "pthread.h"
...
// 创建线程
pthread_t tExport;
// 运行线程
int ret = pthread_create(&tExport, NULL, InportVdataFileThread, &m_threadParams);
if (ret != 0)
{
errObj.PutExceptionId(V_EXCEPTION_CREATE_THREAD);
errObj.PutExceptionDescription("创建线程失败!");
errObj.PutRuntimeParam(strParams);
throw errObj;
return V_RUN_STATUS_EXCEPTION;
}
注释掉这段,测试程序编译就没问题,只要加上就会报错。
苦寻无果,实在苦恼,请高手拯救!
静态库你引入了吗?
只是#include头文件的话,编译OK,但链接会报错,找不到函数实现的地方