链接器错误LNK2019来自第三方库
Linker error LNK2019 from 3rd party library
我正在移植一个旧的vc++6.0应用程序到vs2005,我得到以下链接器错误,我花了几天时间试图找到一个解决方案。
错误LNK2019:无法解析的外部符号_imp_CreateAwnService@52在public: int __thiscall函数中引用CMainFrame: CreateAsaNetworkServices(空白)"
有一个第三方C库,定义了以下API
extern "C"
{
DLLAPI IAwnServ * AWNAPI CreateAwnService(HINSTANCE hInst,
const char *pszDId, const char *pszDLoc,
AWN_DIQUAL DiQual, AWN_DOQUAL DoQual, int Prio,
const char *pszLicStr, const char *pszInfo,
AWN_REPEAT Repeat=R_LAST, TIME_T Since=0,
BOOL bLogin=FALSE, BOOL bDeb=FALSE);
DLLAPI IAwnSend * AWNAPI CreateAwnSend(const IAwnSend *pSend = NULL);
DLLAPI IAwnData * AWNAPI CreateAwnData(const char *pData = NULL, int iLen = 0);
DLLAPI IAwnHeader * AWNAPI CreateAwnHeader(const IAwnHeader *pHeader = NULL);
DLLAPI IAwnReference * AWNAPI CreateAwnReference(const IAwnReference *pRef = NULL);
DLLAPI IAwnFile * AWNAPI CreateAwnFile(const char *pFile = NULL);
DLLAPI IAwnOrder * AWNAPI CreateAwnOrder( const IAwnOrder *pOrder);
DLLAPI IAwnVehicle * AWNAPI CreateAwnVehicle( const IAwnVehicle *pVehicle);
DLLAPI int AWNAPI AwnCmp( const IAwnSend *pSend1, const IAwnSend *pSend2);
DLLAPI TIME_T AWNAPI AwnGetNetTime( const char *NetTime);
DLLAPI int AWNAPI AwnSetNetTime( char *NetTime, TIME_T Time);
DLLAPI TIME_T AWNAPI AwnMakeQueryTime( int MonthsBack);
DLLAPI struct tm *AWNAPI AwnSplitTime( TIME_T Time);
DLLAPI TIME_T AWNAPI AwnMakeTime( tm *ptm);
}
#endif
对API的调用如下:
m_pIAwnService = CreateAwnService( AfxGetApp()->m_hInstance, .........)
我已经检查了所有的链接,包括等,我似乎找不到错误。
看起来您丢失了dll的导入库,或者链接器无法找到它,在链接器->输入->附加依赖
库路径可以在链接器->通用->附加库目录
中设置可能头文件试图使用#pragma自动包含lib文件,因此您应该再次检查链接器是否可以找到该文件。
另一件要检查的事情是使用依赖项漫步器查看DLL,并确保您试图使用的函数确实是@52堆栈清理大小。也许变量类型的大小在不同的编译器版本之间发生了变化(例如typedefs)。
DLLAPI宏在构建应用程序时定义为__declspec(dllimport)
吗?
如果您确实错过了您的DLL的导入库,请查看这篇MSDN文章:如何创建没有. obj或源代码的32位导入库。通过这种方式,您可以对没有提供导入库的第三方DLL进行加载时动态链接。
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 类C++中的函数问题(LNK2019和LNK1120错误)
- 如何包装第三方DLL在R中使用
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- CppSQLite 抛出"LNK2019: unresolved external symbol"错误
- 第三方 API 中的编译错误 - Visual Studio
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- Visual Studio中的wxwidgets应用程序给出错误"LNK2019 unresolved external symbol"
- 什么会导致LNK2019 VisualStudio中的错误?
- 构建 Tensorflow 调试时出现错误LNK2019
- Android NDK:用于第三方Java库的静态或共享C++运行时
- 从第三方定义的类继承时shared_from_this
- Qt应用程序找不到第三方DLL并崩溃
- CMake 包含非 cmake 库的第三方标头
- 我可以将c ++清理器仅应用于程序的一部分而不是第三方库吗?
- LNK2019 在文件中调用静态成员的方法时出错.cpp
- CMake:Android Studio 原生活动项目无法在项目根目录之外找到第三方库
- 错误LNK2019未解析的外部符号"public: __thiscall SLinkList<char>::SLinkList<char>(void)"
- 我有一个第三方库,我有错误LNK2019:未解析的外部..如何调查以修复它
- 链接器错误LNK2019来自第三方库