visual studio - c++:使用其他项目的函数
visual studio - C++ : Using functions from another project
我在visual studio中得到链接错误。有两个项目。一个是静态库,另一个是可执行文件。我指出了.exe项目属性,以便它知道在哪里可以找到.lib文件和库目录。不太确定为什么它仍然不会检测到我试图使用的项目的功能。我还检查了函数签名是否匹配,是否被实现。
还有什么建议可以试试吗?另外,设置项目依赖关系到底是做什么的?我试过设置。exe项目依赖于静态库项目,但没有任何改变。
1>------ Build started: Project: TestAgent, Configuration: Debug Win32 ------
1> Creating library Win32DebugTestAgent.lib and object Win32DebugTestAgent.exp
1>Registrar.obj : error LNK2019: unresolved external symbol "public: long __thiscall StudentManager::Register(class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &)" (?Register@StudentManager@@QAEJABV?$CStringT@GV?$StrTraitMFC@GV?$ChTraitsCRT@G@ATL@@@@@ATL@@00000@Z) referenced in function "public: void __thiscall Registrar::PopulateClasses(struct HWND__ *)" (?PopulateClasses@Registrar@@QAEXPAUHWND__@@@Z)
1>TestCase1.obj : error LNK2001: unresolved external symbol "public: long __thiscall StudentManager::Register(class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &)" (?Register@StudentManager@@QAEJABV?$CStringT@GV?$StrTraitMFC@GV?$ChTraitsCRT@G@ATL@@@@@ATL@@00000@Z)
1>Registrar.obj : error LNK2019: unresolved external symbol "public: long __thiscall SectionManager::Register(class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &)" (?Register@SectionManager@@QAEJABV?$CStringT@GV?$StrTraitMFC@GV?$ChTraitsCRT@G@ATL@@@@@ATL@@000000@Z) referenced in function "public: void __thiscall Registrar::PopulateClasses(struct HWND__ *)" (?PopulateClasses@Registrar@@QAEXPAUHWND__@@@Z)
1>TestCase1.obj : error LNK2001: unresolved external symbol "public: long __thiscall SectionManager::Register(class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &)" (?Register@SectionManager@@QAEJABV?$CStringT@GV?$StrTraitMFC@GV?$ChTraitsCRT@G@ATL@@@@@ATL@@000000@Z)
1>TeacherSectionManager.obj : error LNK2001: unresolved external symbol "private: static class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > Registration::m_strServiceBaseUrl" (?m_strServiceBaseUrl@Registration@@0V?$CStringT@GV?$StrTraitMFC@GV?$ChTraitsCRT@G@ATL@@@@@ATL@@A)
1>Win32DebugTestAgent.exe : fatal error LNK1120: 3 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
请参阅这篇博客文章以获得一个很好的概述。它所做的比仅仅让它先被建造更强大。它还知道将库放在哪里,因此您不必在库路径列表中填充硬编码的位置来查找,当每种配置的路径不同时,这尤其令人讨厌。
确保您所说的"设置为依赖"是指新的项目到项目的引用,而不是解决方案级构建顺序/构建依赖对话框。
您可以在链接中打开详细输出,以查看实际解析了哪些输入。在这种情况下,查看记录的命令行就足够了。如果显示包含所需的库,则可能是编译器选项影响了名称混淆,或者有时是邪恶的#define宏在您不知情的情况下更改了符号的实际名称。
相关文章:
- 相同的 for 循环适用于其他项目,但不适用于此项目。为什么?
- 来自 Omnet++ 中其他项目的引用标头
- 在 Eclipse 中漂亮的打印C++适用于某些项目,而不适用于其他项目
- 创建并编译基类以在其他 C++ 项目 (ROS) 中使用
- 相同的代码,不同的结果?从其他项目包含有什么问题?
- Cmake:制作静态库并在其他项目中使用
- 视觉C++ 引用其他项目中的文件
- 在其他项目的派生类中,在LNK2001中未出现的虚拟函数在LNK2001中产生
- 未解决的外部符号 - 来自其他项目的静态函数
- 仅项目 -> 仅清理 项目正在清理 Visual Studio 2012 中的其他项目
- 包括来自其他项目的源文件的最佳实践
- 如何在其他C 项目中添加本机项目并使用本机功能
- 您可以将链接器/其他依赖项等复制到其他项目吗?
- CMake-在我的当前项目中使用我的其他项目代码
- 如何在同一解决方案中包含其他项目的头文件
- 第三方库抱怨MAXPATHLEN没有在一个项目中声明,但在其他项目中没有声明
- 在QStringList中搜索特定项目,然后搜索可能包含项目的其他项目
- 包括来自其他项目的文件
- 链接项目,其中我使用来自其他项目的静态成员
- 虚函数的定义没有在其他项目中找到