visual studio项目依赖于另一个项目LINKING失败

时间:2010-09-06 17:32:38

标签: c++ visual-studio-2010 linker dependencies

我有一个包含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

您看到的“未解析的外部符号”是cira_lib项目中某个类文件“Utils.cpp”中的函数。所以在我看来,Visual Studio需要我执行一些额外的步骤才能从cira_lib中查看Object文件?我认为通过制作一个“依赖”,所有这些都会自动照顾我吗?

我希望md5_test动态链接cira_lib ...但我认为 Microsoft要求您至少在链接时链接存根.LIB 文件,即使您'重新执行动态链接,这是正确的吗?

那么我是否需要将cira_lib的Release目录添加到md5_test的“Library Directories”并将cira_lib.lib添加到md5_test的“Linker Input”?

我要导出的头文件是以下

 __declspec( dllexport ) string getTimeChkSum( );

,实施文件是

__declspec(dllexport)
string  getTimeChkSum( )
{...}

即使在添加这些指令并重建所有指令之后,我的exe项目仍然看不到这些符号..

1 个答案:

答案 0 :(得分:2)

只有您专门为导出标记的符号才可用于链接DLL的可执行文件。

您应该查看MSDN documentation