c++ - 在 Visual Studio 中编译 CLD2

标签 c++ .net visual-studio-2013 linker clr

我正在尝试编译 chromium compact language detector在 Visual Studio 2013 中。实际上,我正在尝试为该库创建一个 .NET 包装器,因此我已将所有源文件添加到我的 CLR 项目中。

现在,每当我编译时,我都会遇到这些链接错误。

error LNK2005: "struct CLD2::CLD2TableSummary const CLD2::kCjkDeltaBi_obj" (?kCjkDeltaBi_obj@CLD2@@3UCLD2TableSummary@1@B) already defined in cld_generated_cjk_delta_bi_32.obj

这些似乎都是相关的,因为我可以看到“生成的”文件之间的关系。

问题是我有很多这些,但我不确定应该排除哪些以及应该在代码中保留和使用哪些。

这里列出了 CLD2 代码附带的所有生成文件。

cld_generated_cjk_uni_prop_80.cc
cld_generated_score_quad_octa_2.cc
cld_generated_score_quad_octa_0122.cc
cld_generated_score_quad_octa_0122_2.cc
cld_generated_score_quad_octa_1024_256.cc
cld_generated_cjk_delta_bi_4.cc
cld_generated_cjk_delta_bi_32.cc
cld2_generated_octa2_dummy.cc
cld2_generated_quad0122.cc
cld2_generated_quad0720.cc
cld2_generated_quadchrome_2.cc
cld2_generated_quadchrome_16.cc
cld2_generated_cjk_compatible.cc
cld2_generated_deltaocta0122.cc
cld2_generated_deltaocta0527.cc
cld2_generated_deltaoctachrome.cc
cld2_generated_distinctocta0122.cc
cld2_generated_distinctocta0527.cc
cld2_generated_distinctoctachrome.cc

这些的命名约定表明我应该只使用每组中的一个。至少我认为我应该如何使用它,因为我并不是真正的编码专家,也不了解 CLD2 的工作原理。我在网上找不到任何解释如何配置它的引用资料。

我尝试通过仅保留每个生成的组之一来消除链接错误:

例如:从 cld_ generated_cjk_delta_bi_4cld_ generated_cjk_delta_bi_32 我保留了 32 版本。其余文件依此类推。

现在这使得 CLD 可以编译,但当我尝试用语言测试它时,我注意到分数相差甚远,而且表现得莫名其妙地糟糕。

我并不试图支持所有语言,我只需要支持拉丁语以及希伯来语、阿拉伯语、日语和中文。

有人可以解释一下如何配置 CLD2 来正确编译和工作吗?

最佳答案

我创建了 Compact Language Detector 2 的 CLR 版本.

您可以直接从 CLD2.Net 使用它nuget 包或检查 source .

关于c++ - 在 Visual Studio 中编译 CLD2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29339210/

相关文章:

c# - Microsoft Visual Studio SQL 服务器连接 - 无效指针

c++11 - 带有 std::function 参数的函数不接受 lambda 函数

c++ - 无法将 lambda 表达式作为引用传递

c++ - 运算符重载;必须是二元运算符(有 3 个参数)

c++ - boost::fusion::for_each 中的函数对象不同于 std::for_each

c++ - 代码性能严格测量

c# - 更改 PropertyGrid 左侧集合编辑器/ View 的宽度

C++推导成员函数参数

c# - 已解析的 JSON 对象的属性为空

c# - 在 C# 中,是否可以在运行时确定泛型的类型参数?