gpt4 book ai didi

c++ - 使用 gumbo-query 的 VC++ 问题(链接错误)

转载 作者:行者123 更新时间:2023-11-30 05:44:28 26 4
gpt4 key购买 nike

我有一个 VC++ 项目,我正在尝试使用 gumbo-query 库的扩展,发现 here .这个库包装/扩展了 Google 的 gumbo-parser 发现 here .以下是我采取的具体步骤 - 我对导入库不是很熟悉,所以我已经完成了使用 Boost 库的操作:

在 Visual Studio (VS Community 2013) 中,在项目设置下 -> 配置属性 -> C/C++ -> 常规 我已将路径指向一个文件夹,该文件夹包含上面链接的两个项目的所有源文件.具体来说,我从两个项目的 src 文件夹中放置了 .c、.cpp 和 .h 文件,并在我的项目设置中将它们引用为包含目录。

按照扩展 Google 的 gumbo-parser ( found here ) 项目的示例文件,我添加了这两行来导入库:

#include "Document.h"
#include "Node.h"

此时,我的解决方案编译正常。然而,继续按照示例文件,添加第一个变量声明:

CDocument d;

导致链接器错误,如下:

1>Main.obj : error LNK2028: unresolved token (0A0003B7) "public: __thiscall CDocument::CDocument(void)" (??0CDocument@@$$FQAE@XZ) referenced in function "private: void __clrcall MyApplication::Main::worker_DoWork(class System::Object ^,class System::ComponentModel::DoWorkEventArgs ^)" (?worker_DoWork@Main@MyApplication@@$$FA$AAMXP$AAVObject@System@@P$AAVDoWorkEventArgs@ComponentModel@4@@Z)
1>Main.obj : error LNK2028: unresolved token (0A0003B8) "public: virtual __thiscall CDocument::~CDocument(void)" (??1CDocument@@$$FUAE@XZ) referenced in function "private: void __clrcall MyApplication::Main::worker_DoWork(class System::Object ^,class System::ComponentModel::DoWorkEventArgs ^)" (?worker_DoWork@Main@MyApplication@@$$FA$AAMXP$AAVObject@System@@P$AAVDoWorkEventArgs@ComponentModel@4@@Z)
1>Main.obj : error LNK2019: unresolved external symbol "public: __thiscall CDocument::CDocument(void)" (??0CDocument@@$$FQAE@XZ) referenced in function "private: void __clrcall MyApplication::Main::worker_DoWork(class System::Object ^,class System::ComponentModel::DoWorkEventArgs ^)" (?worker_DoWork@Main@MyApplication@@$$FA$AAMXP$AAVObject@System@@P$AAVDoWorkEventArgs@ComponentModel@4@@Z)
1>Main.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall CDocument::~CDocument(void)" (??1CDocument@@$$FUAE@XZ) referenced in function "private: void __clrcall MyApplication::Main::worker_DoWork(class System::Object ^,class System::ComponentModel::DoWorkEventArgs ^)" (?worker_DoWork@Main@MyApplication@@$$FA$AAMXP$AAVObject@System@@P$AAVDoWorkEventArgs@ComponentModel@4@@Z)
1>..{omitted}..\MyApplication.exe : fatal error LNK1120: 4 unresolved externals

无论我将 CDocument 实例化放在何处,似乎都会出现此错误。

我该怎么做才能纠正这个问题? VS 似乎认为包含很好,当我放入 CDocument d 时更是如此;它亮起表明它识别了 CDocument 类型。

最佳答案

一如既往,很明显我成为 JS 开发人员的时间太长了。我确实需要编译一个 .lib 文件。谢谢Christian提醒我这一点。

Google 的原始 gumbo-parser 项目包括一个 VS 项目。我打开它并编译它,解决了所有项目设置问题,以便我可以将它导入我的项目,这是我通过配置属性 -> 链接器 -> 输入 -> 我的 VS 项目的附加依赖项设置完成的。

接下来,我从包装器库 gumbo-query 添加了额外的源文件,我必须在其中修复原始 gumbo-parser 项目的 parser.h/parser.cpp 和 Parser.h/Parser 之间的命名冲突。包装器库中的 cpp 文件。我还更改了对 #include <gumbo.h> 的所有引用至 #include "gumbo.h"

最终,我得到了一个包含原始库和包装库的 gumbo.lib 文件,并将其导入到我的项目中,现在我似乎能够成功地使用这些函数。

关于c++ - 使用 gumbo-query 的 VC++ 问题(链接错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29839733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com