我正在尝试编译 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_4
和 cld_ generated_cjk_delta_bi_32
我保留了 32 版本。其余文件依此类推。
现在这使得 CLD 可以编译,但当我尝试用语言测试它时,我注意到分数相差甚远,而且表现得莫名其妙地糟糕。
我并不试图支持所有语言,我只需要支持拉丁语以及希伯来语、阿拉伯语、日语和中文。
有人可以解释一下如何配置 CLD2 来正确编译和工作吗?
最佳答案
我创建了 Compact Language Detector 2 的 CLR 版本.
关于c++ - 在 Visual Studio 中编译 CLD2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29339210/