我在.h
文件中定义了一个静态成员函数,该函数工作正常。
当我尝试将实现转移到.cpp
文件时,另一个调用此函数的类因LNK2019错误而导致项目构建失败。
错误信息是:
8>------ Build started: Project: COrders, Configuration: Debug x64 ------
8> Creating library D:\devel\Server\COrders\Debugx64\COrders.lib and object D:\devel\Server\COrders\Debugx64\COrders.exp
8>OrderProcessor.obj : error LNK2019: unresolved external symbol "public: static bool __cdecl COAValidator::ValidatePercentage(class CSDO const &,class CExecInstHelper const &,class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > const &)" (?ValidatePercentageXI@COAValidator@CPlus@@SA_NAEBVCSDO@AEBVCExecInstHelper@@AEBV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z) referenced in function "private: int __cdecl CPlus::COrderProcessor::DoCreate(int)" (?DoCreate@COrderProcessor@CPlus@@AEAAHH@Z)
8>D:\devel\Server\Server\COrders\Debugx64\COrdersd.dll : fatal error LNK1120: 1 unresolved externals
这COrderProcessor::DoCreate()
是尝试致电static bool COAValidator::ValidatePercentage()
,通过提供.dll
知道如何解决吗?
当你充分的定义此功能.h
的文件,它被编译到任何客户端代码#include
s表示.h
文件,并没有连接需要找到函数定义。
但是,如果将函数定义移至.cpp
文件,则客户端代码在编译时将不再能看到该定义,而是依靠链接器来定位它。然后必须将功能标记为dllexport
,以便将其包含在dll
的功能表中。
此页面描述了执行此操作的语法:https : //msdn.microsoft.com/zh-cn/library/a90k134d.aspx
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句