ale*_*cci 5 c++ linker dependencies visual-studio-2010
我有一个包含2个项目cira_lib和md5_test的解决方案.一个项目(cira_lib)是一个编译为DLL的中央库.另一个项目(md5_test)是一个依赖于cira_lib的exe.当我构建md5_test时,它首先构建cira_lib,所以我知道正在遵循项目依赖项.但是当VC++链接到md5_test时,会返回一个链接器错误:
1> win32_cira.vcxproj -> C:\Users\ale-xps\Documents\Visual Studio 2010\Projects\win32_cira\Release\cira_lib.dll
2>------ Rebuild All started: Project: md5_test, Configuration: Release Win32 ------
2> MD5Test.cpp
2>MD5Test.obj : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl getTimeChkSum(void)" (?getTimeChkSum@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
2>C:\Users\ale-xps\Documents\Visual Studio 2010\Projects\win32_cira\Release\md5_test.exe : fatal error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)
您看到的"未解析的外部符号"是cira_lib项目中某个类文件"Utils.cpp"中的函数.所以在我看来,Visual Studio需要我执行一些额外的步骤才能从cira_lib中查看Object文件?我认为通过制造一个"依赖",所有这些都将自动照顾我?
我希望md5_test能够动态地链接到cira_lib ...但我认为微软要求你至少在链接时链接存根.LIB文件,即使你正在执行动态链接,这是正确的吗?
那么我需要将cira_lib的Release目录添加到md5_test的"Library Directories"并将cira_lib.lib添加到md5_test的"Linker Input"吗?
我正在导出的头文件如下
__declspec( dllexport ) string getTimeChkSum( );
Run Code Online (Sandbox Code Playgroud)
而实现文件是
__declspec(dllexport)
string getTimeChkSum( )
{...}
Run Code Online (Sandbox Code Playgroud)
即使在添加这些指令并重建所有内容后,我的exe项目仍然无法看到这些符号.
| 归档时间: |
|
| 查看次数: |
3402 次 |
| 最近记录: |