Phi*_*ati 1 visual-studio visual-c++
我正在尝试习惯MFC开发和Visual Studio,因此我安装了Visual Studio 2012 RC并创建了一个简单的MFC应用程序.目前,该应用程序只是为我生成的MFC向导.
我决定要合并一个XML库,所以我在github上找到了这个.我下载包含源代码的ZIP文件,解压缩然后在Visual Studio中转到解决方案资源管理器,选择我的解决方案,右键单击并选择"添加">"现有项目".我选择源代码的项目文件,它出现在我的解决方案资源管理器树中.
我测试代码编译,它确实.但是我不太确定如何从我当前的解决方案中使用它.
我尝试在我的doc中使用此代码:
#include "../../TinyXML2/leethomason-tinyxml2-a3efec0/tinyxml2.h"
<...snip...>
BOOL LoadDocumentFromXML(const CString& filename) {
CT2CA pszConvertedAnsiString (filename);
std::string s(pszConvertedAnsiString);
tinyxml2::XMLDocument doc(true);
if (tinyxml2::XML_NO_ERROR != doc.LoadFile(s.c_str())) {
return FALSE;
}
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试构建项目时,我收到此链接器错误:
------ Build started: Project: GraphApp, Configuration: Debug Win32 ------
GraphAppDoc.cpp
GraphAppDoc.obj : error LNK2019: unresolved external symbol "public: __thiscall tinyxml2::XMLDocument::XMLDocument(bool)" (??0XMLDocument@tinyxml2@@QAE@_N@Z) referenced in function "int __cdecl LoadDocumentFromXML(class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > const &)" (?LoadDocumentFromXML@@YAHABV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z)
GraphAppDoc.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall tinyxml2::XMLDocument::~XMLDocument(void)" (??1XMLDocument@tinyxml2@@UAE@XZ) referenced in function "int __cdecl LoadDocumentFromXML(class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > const &)" (?LoadDocumentFromXML@@YAHABV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z)
GraphAppDoc.obj : error LNK2019: unresolved external symbol "public: int __thiscall tinyxml2::XMLDocument::LoadFile(char const *)" (?LoadFile@XMLDocument@tinyxml2@@QAEHPBD@Z) referenced in function "int __cdecl LoadDocumentFromXML(class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > const &)" (?LoadDocumentFromXML@@YAHABV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z)
C:\Users\Phill\Documents\Visual Studio 2012\Projects\GraphApp\Debug\GraphApp.exe : fatal error LNK1120: 3 unresolved externals
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)
在解决方案资源管理器中,我选择我的MFC应用程序项目,右键单击并选择"依赖关系".我确保MFC应用程序设置为依赖于tinyxml项目,我确保"构建顺序"是正确的(tinyxml优先).我也转到"参考文献......"并在那里添加tinyxml.我甚至将tinyxml的调试目录添加到我的MFC应用程序的项目属性中的包含路径中.我错过了什么?
好的,事实证明我没有完全阅读文档.读取附加项目的XML在此处说明:
它是一个标题和一个cpp文件.只需将这些添加到您的项目中即可.
所以我这样做了.然后我得到了一些编译器警告:
------ Build started: Project: GraphApp, Configuration: Debug Win32 ------
tinyxml2.cpp
c:\users\phill\documents\visual studio 2012\projects\graphapp\graphapp\tinyxml2.cpp(24): warning C4627: '#include "tinyxml2.h"': skipped when looking for precompiled header use
Add directive to 'stdafx.h' or rebuild precompiled header
c:\users\phill\documents\visual studio 2012\projects\graphapp\graphapp\tinyxml2.cpp(26): warning C4627: '#include <cstdio>': skipped when looking for precompiled header use
Add directive to 'stdafx.h' or rebuild precompiled header
c:\users\phill\documents\visual studio 2012\projects\graphapp\graphapp\tinyxml2.cpp(27): warning C4627: '#include <cstdlib>': skipped when looking for precompiled header use
Add directive to 'stdafx.h' or rebuild precompiled header
c:\users\phill\documents\visual studio 2012\projects\graphapp\graphapp\tinyxml2.cpp(28): warning C4627: '#include <new>': skipped when looking for precompiled header use
Add directive to 'stdafx.h' or rebuild precompiled header
c:\users\phill\documents\visual studio 2012\projects\graphapp\graphapp\tinyxml2.cpp(29): warning C4627: '#include <cstddef>': skipped when looking for precompiled header use
Add directive to 'stdafx.h' or rebuild precompiled header
c:\users\phill\documents\visual studio 2012\projects\graphapp\graphapp\tinyxml2.cpp(1834): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)
那么我在解决方案资源管理器中选择了"tinyxml2.cpp",右键单击,转到属性.在"C++"下的属性中,我转到"预编译标题"并更改了以下选项:
Precompiled Header: Use
Run Code Online (Sandbox Code Playgroud)
至
Precompiled Header: Not using precompiled headers
Run Code Online (Sandbox Code Playgroud)
然后它神奇地工作了!
| 归档时间: |
|
| 查看次数: |
5417 次 |
| 最近记录: |