LNK1104:无法打开文件'wxbase28d.lib'

LNK1104: cannot open file 'wxbase28d.lib'

本文关键字:wxbase28d lib 文件 LNK1104      更新时间:2023-10-16

我正在尝试编译使用wxWidgets库创建的现有项目。我成功编译了wxWidgets 2.8.12库。现在,我正在尝试编译我的项目。但是我得到错误:

fatal error LNK1104: cannot open file 'wxbase28d.lib'

之后,我在设置中添加了一些变量,如:

C/c++ ->预处理器定义:

WIN32;__WXMSW__;_WINDOWS;_DEBUG;__WXDEBUG__;_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)

vc++目录->Include目录:

D:instantclient_12_1sdkinclude;$(WXWIN)libvc_libmswd;$(WXWIN)include;$(VCInstallDir)include;$(VCInstallDir)atlmfcinclude;$(WindowsSdkDir)include;$(FrameworkSDKDir)include;

链接器->通用->附加库目录:

$(WXWIN)libvc_lib;E:appvasylproduct11.1.0db_1OCIlibMSVCvc71;$(WXDIR284)libvc_lib;%(AdditionalLibraryDirectories)

资源->通用->附加目录:

$(WXWIN)include;c:wxMSW284include;$(WXDIR284)include;%(AdditionalIncludeDirectories)

现在,情况是这样的:

1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _free already defined in LIBCMTD.lib(dbgfree.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _malloc already defined in LIBCMTD.lib(dbgmalloc.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _realloc already defined in LIBCMTD.lib(dbgrealloc.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _memmove already defined in LIBCMTD.lib(memmove.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _tolower already defined in LIBCMTD.lib(tolower.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _isalpha already defined in LIBCMTD.lib(_ctype.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _isdigit already defined in LIBCMTD.lib(_ctype.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _isspace already defined in LIBCMTD.lib(_ctype.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _strtol already defined in LIBCMTD.lib(strtol.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _strtoul already defined in LIBCMTD.lib(strtol.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: __strtoi64 already defined in LIBCMTD.lib(strtoq.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: __strtoui64 already defined in LIBCMTD.lib(strtoq.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: __errno already defined in LIBCMTD.lib(dosmap.obj)
1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: __vsprintf_p already defined in LIBCMTD.lib(vsnprnc.obj)
...
...
etc.

有人能帮我指出我做错了什么吗?

您正在为您的项目和库使用不同的CRT设置(静态vs DLL)。确保使用相同的选项(/MD[d]/MT[d])来(重新)构建它们。

导致此链接器错误的可能原因有很多。第一个要检查的地址是MSDN: https://msdn.microsoft.com/en-us/library/ts7eyw4s.aspx

$(WXWIN)是什么?它与$(WXDIR284)有什么不同?似乎,您包含了两次wxWidgets路径…