VS2012中使用CEGUI项目发布到XP平台的问题(核心方法就一句话。“你项目使用的所有外部依赖库都用/MT编译。”)

接着上一篇文章,详细说说如何把一个带CEGUI的项目发布到XP平台。

这个问题纠缠了我好几天。这里把详细解决思路记下来。有同样问题的朋友可以少走很多弯路。

核心方法就一句话。“你项目使用的所有外部依赖库都用/MT编译。”

1.准备。

首先你要具备如下工具:CEGUI源码;FreeType源码;Pcre源码;CMake工具。我会在下文说明原因。

各个开源库的版本号,请参考你的CEGUI引用的各自的头文件分别下载。

FreeType开源库主页:http://sourceforge.net/projects/freetype/?source=dlp

Pcre开源库主页:http://sourceforge.net/projects/pcre/?source=dlp

Pcre源码编译指南:http://tunps.com/cmake-pcrecpp

CMake工具主页:http://cmake.org/cmake/resources/software.html

2.编译CEGUI

请参考我的上一篇博客:http://blog.csdn.net/lsldd/article/details/8821063,编译CEGUI。注意,每个子项目都要配置好。

编译完成后,你会发现一大堆Link冲突错误和警告,大概如下:

1>freetype.lib(ftbase.obj) : warning LNK4217: locally defined symbol _strrchr imported in function _raccess_make_file_name
1>pcre.lib(pcre_exec.obj) : warning LNK4049: locally defined symbol _memmove imported

1>freetype.lib(smooth.obj) : error LNK2001: unresolved external symbol __imp__longjmp

仔细观察错误,主要是FreeType导致的。原因是CEGUIBase这个工程中引入了如下几个库:

Winmm.lib,freetype.lib,pcre.lib,zlib.lib

因此我们猜想,这里的freetype是用/MD编译的!这就是罪魁祸首!必须自己用/MT编译源码!

Pcre导致很多警告,我这里以防万一也自己编译了;

ZLib也有1,2个警告,但是替换它就坑爹了,因为CEGUI把ZLib拷贝了部分源码(unZip部分)到自己工程,又修改了部分源代码(主要是吧C风格改成C++),因此我没有替换ZLib,结果表明不影响。

3.编译依赖库

同样参考发布到XP的标准步骤,分别编译FreeType源码;Pcre源码。然后把lib放入CEGUI的dependencies\lib目录下。

注意。lib目录下还有2个目录,由于我们把CEGUI编译为DLL,所以,请放在dependencies\lib\dynamic目录下。

然后编译CEGUI。这里由于CEGUI已经在上一步编译过,这一步只是LinK,所以重新Link的时间很短。

Link后仍然会出现一堆库冲突错误。典型的如下:

1>MSVCRT.lib(MSVCR110.dll) : error LNK2005: _malloc already defined in LIBCMT.lib(malloc.obj)
1>MSVCRT.lib(MSVCR110.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)

这就是因为工程中同时存在/MT与/MD的依赖,必须砍掉一个。由于我们要发布到XP必须使用/MT,因此,请忽略掉MSVCRT.lib,方法是:

【工程属性】-【链接】-【输入】-【忽略指定依赖项】,输入MSVCRT.lib

这样支持发布到XP的CEGUI就准备好了。

4.配好你的项目

对一个简单的CEGUI程序而言,需要用到如下DLL:

CEGUIBase.dll,CEGUIOpenGLRenderer.dll, CEGUIExpatParser.dll, CEGUISILLYImageCodec.dll, CEGUIFalagardWRBase.dll ,SILLY.dll

可能还需要部分C运行时库,比如msvcp100.dll之类。请自行准备,没有可以去别的系统上COPY或者下载。

随时注意看CEGUI.Log文件,看哪个DLL加载失败。要么是找不到,要么是没有使用/MT编译。

把CEGUI编译的相应的Lib链接如你的工程项目。

同时,把【工程属性】-【链接】-【优化】里的第一项和第二项优化开关都打开

同样用发布到XP的标准步骤,编译好你的工程。

现在应该没有问题了。

http://blog.csdn.net/lsldd/article/details/8927698

时间: 2024-08-06 07:55:49

VS2012中使用CEGUI项目发布到XP平台的问题(核心方法就一句话。“你项目使用的所有外部依赖库都用/MT编译。”)的相关文章

VS2012发布到XP平台

默认情况下,你的VS2012工程发布后,在XP下运行会出现提示“not a valid win32 application”. 微软推出了Visual Studio 2012 update 1可以支持发布到XP平台,这个更新好像只能在线安装,比较麻烦. 然而就算你打了补丁,你的程序在XP下可能还会出现 “无法定位程序输入点 FlushProcessWriteBuffers 于动态链接库 KERNEL32.dll 上” 这样的错误提示.见http://bbs.csdn.net/topics/390

DICOM医学图像处理:DCMTK在VS2012中的配置

背景: 最近由于项目需要,将原本的开发IDE环境由VS2008升级到了VS2012.本以为编译完成后的DCMTK开源库可以直接从VS2008移植到VS2012.但是通过项目属性添加完包含目录和依赖库后,编译会出现大量的链接错误(大多是跟dcmdata.lib.oflog.lib有关). 解决方法: 重新按照原本的博客前辈柳北风儿(大神目前已经博客转移到网易:http://blog.163.com/[email protected]/),利用CMake工具,选择VS2012本地编译器对DCMTK3

eclipse 项目发布到tomcat中(转)

转来的,有侵权联系删除 Eclipse的web工程至Tomcat默认的部署目录是在工程空间下,本文旨在将部署目录改为Tomcat安装目录,并解决依赖包输出问题. 1.在Eclipse中添加Tomcat服务器. 2.将web工程发布至tomcat: 选择刚添加的Tomcat: 此时Eclipse将自动生成Servers工程: 3.在Servers视图,Remove删除刚刚发布的项目: 4.打开Tomcat服务器配置项: 5.修改以下两个配置项,Tomcat保持启动状态,否则Server Locat

【狂人小白】如何将Java项目发布到Maven中

将Java项目发布到Maven中 如何通过Sonatype进行发布Maven操作,并且能够在http://search.maven.org 中搜索到关键步骤:1. 申请OSS账号2. 通过gpg创建密钥3. 完善setting.xml和pom.xml4. 发布审核 A. 申请Sonatype账号 注册地址: https://issues.sonatype.org/secure/Signup!default.jspa B. 创建Issue 创建地址: https://issues.sonatype

eclipse中web项目发布到tomcat时项目名称不同

今天使用eclipse进行项目调试开发,有的时候需要修改项目的名称,可是在eclipse中部署到tomcat中访问的时候仍然只能使用旧的项目名称进行访问. 发布的项目会出现路径不对的情况,修改过程, 找到项目目录,在.settings目录下找到org.eclipse.wst.common.component文件,修改文件内容 <?xml version="1.0" encoding="UTF-8"?><project-modules id=&quo

MVC4.0中项目发布遇到IE11时session存入URL中,导致记不住密码的问题

///MVC4.0中项目发布遇到IE11时session存入URL中,导致记不住密码的问题,在webconfig中配置<system.web><authentication mode="Forms">      <forms loginUrl="~/Account/Login" timeout="2880" cookieless="UseCookies" />    </authent

Maven 如何将本地的项目发布到 Archiva 中

很多时候,我们可能并不希望将我们的构建代码发布到公共的 Maven 仓库中. 为了一些私有的项目发布到公司内部的 Archiva 中,如何使用 Maven 进行发布. 这个其实比较简单. 你需要满足下面 3 个条件. 一个具有发布权限的 Maven 仓库 在 settings.xml 中配置你可以访问这个仓库的用户名和密码 配置你的 pom.xml 文件. 在配置成功后,你可以运行 mvn clean deploy 进行发布. 具体来说,针对一个条件,具有发布权限的 maven 仓库,最简单的办

Win10下IIS配置、项目发布、添加网站

Win10下IIS配置 1.找到控制面板:[开始]菜单鼠标右击,打开[控制面板] 2.打开控制面板,点击[程序],点击[启用或关闭Windows功能] 下一步,点击[启用虎关闭Windows功能] 3. 开始修改IIS了,我是这样勾上的,有可能比较多. 4. 验证IIS是否正确安装,等待几分钟后IIS配置完成.在浏览器输入http://localhost/iisstart.htm会出现 IIS安装成功页面.第一次修改的时候出现了成功页面,但是后来删除了IIS中默认的网站就打不开了,但是不影响的.

.NET项目发布网站具体步骤和注意事项

ASP.NET项目发布网站具体步骤 1.     在解决方案管理器中右键项目名称,点击“发布网站”,如图 2.     在发布窗口中选择“文件系统”,然后选择文件路径(一般放在wwwroot下),勾选“发布前删除所有现有文件”,点击发布按钮 3.     发布成目录以后,切换到IIS,可通过“应用程序”(即虚拟目录)方式,也可通过网站方式发布网站 此时YJXM是以目录的形式存在的,必须要转化为“应用程序”(即虚拟目录)的方式,选择“转换为应用程序”菜单,选择应用程序池为“DefaultAppPo