我有一个包含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项目仍然看不到这些符号..