编写了一个DLL库文件,发现可以正常编译生成debug的库,但是release的部分编译报错。列举过程中出现的错误解决办法:
1.报错点:fatal error C1189: #error: Building MFC application with /MD[d] …
fatal error C1189: #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
解决办法:
项目-属性页面 -配置属性-高级-MFC使用-在高级DLL中使用MFC
属性—C/C+±-代码生成–运行库–多线程DLL(/MD)
2.报错点:error LNK2005:XXXXX已经在dllmain.obj 中定义
在1的前提下
1>PLCDll.obj : error LNK2005: “struct IActUtlType64 * m_pIUtlType” (?m_pIUtlType@@3PEAUIActUtlType64@@EA) 已经在 dllmain.obj 中定义
1>PLCDll.obj : error LNK2005: “struct IActProgType64 * m_pIProgType” (?m_pIProgType@@3PEAUIActProgType64@@EA) 已经在 dllmain.obj 中定义
解决办法:
发现把该m_pIUtlType定义是在.h中,把其定义更改到.CPP中即可
3.报错点:error LNK2005: DllMain 已经在 mfcs140u.lib(dllmodul.obj) 中定义
dllmain.obj : error LNK2005: DllMain 已经在 mfcs140u.lib(dllmodul.obj) 中定义
解决办法:_USRDLL
去掉属性-C/C+±预处理器-预处理器定义 中的_USRDLL --然后确定 应用 重新生成
遇到的该项目中,解决这些问题之后,则可正常编译生成。