c 怎么编译源码-vs2015编译linux源码

摘要:本文介绍了Win7 64位环境下编译OpenCC(Open Chinese Convert)1.0.4源码的整个过程。 除了VS2017之外,VS2013及以上版本应该也基本适用,其他版本的Windows操作系统也应该适用。 本文不仅完成了基本的编译过程c 怎么编译源码,还强调并解决了开放网络上Windows环境下编译OpenCC 1.0.4过程中尚未解决的两个问题(Github和搜索引擎上都没有答案) 。

1.VS的版本关系

VC10,对应VS2010

VC11,对应VS2012

VC12,对应VS2013(OpenCC需要VS2013以上版本)

VC14,对应VS2015

VC15,对应VS2017(CMAKE直接生成的该版本的解决方案,编译时有未解决的BUG,稍后详述)

2. 为什么要从源码编译

1、OpenCC默认不发布Windows平台下的二进制文件;

2、需要进行源代码级别的修改;

3.OpenCC简介

OpenCC(Open Chinese Convert、Open English Conversion)是一个用于简体和繁体之间英文转换的开源项目。 支持词汇级转换、异体字转换、地区惯用词转换(中国大陆、台湾、香港)。 其官方网站位于Github:。

OpenCC严格区分“一简单到多”和“一简单到多不同”,完全兼容异体字,支持中国大陆、台湾、香港的异体字和地域惯用词的转换,词库和函数库完全分离,支持C和C++、Python、PHP、Java、Ruby、Node.js和Android,兼容Windows、Linux和Mac平台。

在Github的Wiki中,有OpenCC的详细介绍以及与cconv的比较。 它还支持现代汉语中常用的常见的一对多词义和地名。 从介绍来看,这应该是一个很好的解决方案。

4、Windows平台下使用CMAKE和Visual Studio编译OpenCC

OpenCC采用C++编译,编译需要CMAKE和Windows Visual Studio(2013或更高版本)。 关于CMAKE的安装,请参考文章《Win7 64位环境下OpenCV 3.3.0源码编译及VS2010(VS10)开发》相关内容,这里不再赘述,CMAKE 3.9.2和Visual本文使用的 Studio 版本是:

编译OpenCC 1.0.4使用的CAMKE版本

c 怎么编译源码-vs2015编译linux源码

编译OpenCC 1.0.4使用的VisualStudio版本

安装CMAKE后,使用以下命令生成VisualStudio解决方案文件并编译(32位):

cmake -H. -Bbuild -G“Visual Studio 15”-DCMAKE_INSTALL_PREFIX =“路径/到/安装”

cmake –build 构建 –config Release –target install

请注意,您需要根据本地安装的具体Visual Studio版本选择合理的“Visual Studio *”,其中:

VC10,对应VS2010

VC11,对应VS2012

VC12,对应VS2013

VC14,对应VS2015

VC15,对应VS2017(请注意,直接使用“Visual Studio 15”生成的解决方案无法编译,怀疑是VS的BUG,具体参见问题②)。 如果选择不合适的版本,会报找不到对应版本的工具链,可以通过Visual Studio Installer进行安装(后面会详细介绍)。

请注意,在个别机器上,如果直接从CMD运行上述命令,可能会报如下错误:

使用CMD直接运行CMAKE时报错

无法运行 MSBuild 命令:

MSBuild.exe

获取 VCTargetsPath 的值:

配置不完整,出现错误!

此时,从 Visual Studio 开发人员控制台(开发人员命令提示符):

使用 VS 开发人员命令提示符编译 OpenCC

在以下位置运行上述命令:

在VS开发者命令提示符下编译OpenCC1.0.4

编译完成后,生成的VS工程文件等会输出到builid目录下:

VS开发者命令提示符下编译OpenCC1.0.4结果

然后打开buildid目录下的.sln解决方案文件:

CMAKE生成OpenCC1.0.4 VisualStudio解决方案文件

在VS中打开解决方案后,默认的启动项目是ALL_BUILD,只需点击菜单中的“生成-重新生成解决方案”即可重新生成解决方案。 请注意,OpenCC1.0.4版本CMAKE生成的VS2017(Visual Studio 15)解决方案文件直接编译时会出现两类错误:

①PhraseExtract.cpp文件编码问题

opencc_phrase_extract 项目和 libopencc 项目编译失败。 这两个项目中的PhraseExtract.cpp文件(路径分别位于src/PhraseExtract.cpp和src/tools/PhraseExtract.cpp)会因为编码问题而报错:

警告 C4819 文件包含当前代码页 (936) 无法表示的字符。请以 Unicode 格式保存此文件以避免数据丢失

错误 C3688 无效的文字后缀“断”; 无文字文字运算符或文字运算符模板“operator”“”““檚”

错误 C3688 无效的文字后缀“t”; 找不到文字运算符或文字运算符模板“operator”“”“dze”

错误 C3688 无效的文字后缀“&#”; 未找到文字运算符或文字运算符模板“运算符“”“””

常量中的错误 C2001 换行符

如下所示:

默认生成的VS2017解决方案早上报错

此时,您可以将PhraseExtract.cpp文件的编码从默认的“简体英语(GB2312-代码页936)”和“Uncode(UTF-8无符号)-代码页65001”更改为“Unicode-代码页1200” 》解决方案(如果找不到“高级保存选项”,请参考《解决Visual Studio 2017(VS2017)中找不到/没有“高级保存选项”的问题》):

修改OpenCC 1.0.4中PhraseExtract.cpp文件的编码,解决编译错误

网上有一篇文章《使用OPENCC库进行简繁体转换(C++代码)》在搜索引擎中排名很高:

这里1.0.4版本的项目:opencc_phrase_extract编译比较困难,GIT上也有相应的issue,只要删除这个项目就可以了c 怎么编译源码,不会影响使用,不用担心。

如下所示:

错误的处理PhraseExtract.cpp文件编码问题导致编译失败的方法

这其实是一种错误的鸵鸟做法。 其实这个问题可以通过改变本文介绍的文件编码方式来解决。 在本文最后我们还可以看到tools文件夹中生成了opencc_phrase_extract.exe.exe。

②setjmp莫名其妙的奇怪BUG

除了编码问题之外,C语言中用于异常处理的longjmp和setjmp还有几个特有的bug:

错误 C3829 标准属性“noreturn”仅适用于函数 libopencc d:Program Files (x86)Microsoft Visual Studio2017ProfessionalVCToolsMSVC14.12.25827includesetjmp.h 165

错误 C2206“longjmp”: typedef 不能在函数定义 libopencc d:Program Files (x86)Microsoft Visual Studio2017ProfessionalVCToolsMSVC14.12.25827includesetjmp.h 165 中使用

错误 C2039“longjmp”:不是“全局命名空间”libopencc d:Program Files (x86)Microsoft Visual Studio2017ProfessionalVCToolsMSVC14.12.25827includecsetjmp 10 的成员

错误 C2873 'longjmp':符号不能在 using 声明 libopencc d:Program Files (x86)Microsoft Visual Studio2017ProfessionalVCToolsMSVC14.12.25827includecsetjmp 10 中使用

如下所示:

用VS2017编译OpenCC1.0.4源码时出现奇怪的错误

上述错误报告的位置位于以下形式:

d:Program Files (x86)Microsoft Visual Studio2017ProfessionalVCToolsMSVC14.12.25827includesetjmp.h(165)

头文件中,头文件是VS自带的头文件。 上述四个错误在所有搜索引擎都没有答案。 我在 OpenCC 所在的 GitHub 上的 Issue#287 提到了这个问题,看看以后有没有人能解决。

直观上可能是因为VS2017的问题,于是尝试使用“Visual Studio 14”降级到VS2015编译,结果成功:

cmake -H. -Bbuild -G“Visual Studio 14”-DCMAKE_INSTALL_PREFIX =“路径/到/安装”

cmake –build 构建 –config Release –target install

请注意,必须安装V140工具集才能使用“Visual Studio 14”,否则会报错,可以通过Visual Studio Installer完成:

使用 Visual Studio 安装程序安装 v140 工具集

在“修改-单个组件”中选择“VC++ 2015.3 v140 Toolset for Desktop (x86,x64)”:

使用 Visual Studio 安装程序安装 v140 工具集

安装完成后,再次尝试编译,成功:

使用“Visual Studio 14”降级到VS2015成功编译OpenCC1.0.4

在VS2017中打开opencc.sln解决方案,可以观察到项目属性的“目标平台版本”为8.1,而VS2017的默认值为10.0.x,这可能是编译失败的原因之一VC15:

VS2015解决方案文件中项目属性的“目标平台版本”

编译后生成的二进制文件位于./build/src/Release目录下,一共有三个:

OpenCC1.0.4编译的二进制文件

其中opencc.dll是动态链接库,opencc.lib是静态链接库。

另外./build/src/tools/Release目录下还有编译生成的相关工具:

OpenCC1.0.4编译的二进制文件(工具)

我们可以看到,在tools文件夹下生成了opencc_phrase_extract.exe文件,没有使用鸵鸟策略。

直接运行OpenCC,可以正常输出(因为最新代码是直接从GitHub master拉取的,版本号已经到了1.0.5):

运行编译好的OpenCC

5.编译64位(x64)OpenCC

如果要编译64位版本,可以使用以下命令生成VisualStudio解决方案:

cmake -H. -Bbuild -G“Visual Studio 14 Win64” -DCMAKE_INSTALL_PREFIX="path/to/install"

cmake –build 构建 –config Release –target install

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 c 怎么编译源码-vs2015编译linux源码 https://www.wkzy.net/game/177374.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务