首页 / 知识
关于Visual C ++:VS 2005和2008库链接
2023-04-14 12:57:00

VS 2005 & 2008 library linking将用VS 2005编译的静态库(.lib)与用VS 2008编译的程序链接是否正确? 库和我的程序都是用C ++编写的。 该程序在Windows Mobile 6 Professional模拟器上运行。 这似乎可行,没有链接错误。 但是,程序会在启动过程中崩溃,因为链接库中发生了奇怪的事情。 例如。 lib可以返回带有大负数大小的字符的向量。 使用VS 2005编译程序时,没有此类问题。 更奇怪的是,该问题仅发生在使用发行版配置进行构建时。 使用调试配置进行编译时,不会发生此问题。 VS2005和VS2008使用不同的STL实现。当VS2005代码返回一个向量时,该对象的内存布局与VS2008所期望的不同。这应该是您在返回日期中看到的值损坏的原因。 根据经验,您应始终使用相同的编译器编译项目的所有C ++模块,并且所有设置/#定义均相等。 导致类似行为的一个特定#define是VS2008的SECURE_SCL #define。两个使用不同设置编译的模块将完全引起您的问题,因为#defining SECURE_SCL为各种C ++库类引入了更多成员变量。 以您描述的方式链接到较旧的库并不是不正确的,但这也不足为奇,您会看到一些奇怪的行为。夫妻健康检查:
当您说.LIB时,是指真正的静态库(mylib.lib)还是DLL的导入库(mylib.lib-> mylib.dll)? VS2008可执行项目的编译/链接设置是什么? 另外:正如Timbo所指出的,VS 2005和VS 2008使用不同的STL实现。但是,如果还安装了VS 2005,则可以使用VS 2008根据旧的STL进行构建: 在VS 2008中打开您的库项目。 转到工具>选项>项目和解决方案> VC ++目录 在顶部的下拉菜单中选择您的设备平台。 将路径从VS9更改为VS8文件夹。 这样,您可以使用VS 2008构建与VS 2005一起使用的库。(对我有用)。 |
最新内容
相关内容
linux编译源代码命令?
linux编译源代码命令?,工具,代码,百度,最新,环境,项目,系统,电脑,密码,内核,linux怎样编译git源码包1、linux的源码是在/usr/src这个目录下,此linux编译时显示命令?
linux编译时显示命令?,系统,基础,工具,代码,百度,下来,网上,命令,内核,文件,LINUX中此程序运行后,为何刷新不出命令提示符?1、有几个原因:一:你linux重新链接库命令?
linux重新链接库命令?,代码,软件,平台,产品,电脑,系统,入口,市场,工业,通信,linux下金仓数据库重启命令1、进入开始菜单-金仓数据库KingbaseESlinux运行vim命令?
linux运行vim命令?,系统,工具,官方网站,模式,基础,数据,代码,环境,入口,命令,如何使用Linux系统中的Vim编辑器1、vim编辑器的三种模式:一般模式linux监控命令运行?
linux监控命令运行?,系统,工作,地址,信息,工具,情况,标准,环境,命令,状态,linux服务器监控的几个方法和命令uptime 该命令直观的显示了服务器linux链接远程命令?
linux链接远程命令?,系统,地址,网络,密码,软件,名称,工具,服务,电脑,认证,如何远程连接linux服务器步骤一:登录Linux服务器。打开Xshell,新建会linux自动运行命令?
linux自动运行命令?,服务,系统,时间,代码,周期性,第一,命令,管理,在线,状态,linux计划任务(自动化执行任务的利器)1、Linux计划任务是一种自动linux开启运行命令?
linux开启运行命令?,系统,服务,工作,管理,状态,命令,标准,情况,环境,工具,linux中如何开机启动运行指定的应用程序或指令?1、开机启动时自动运linux运行wps命令?
linux运行wps命令?,软件,官网,名称,时间,电脑,系统,工具,环境,项目,数据,wps支持linux命令行下word转pdf吗?1、通过浏览器进入到wps官网,然后点linux命令行链接网络?
linux命令行链接网络?,网络,系统,地址,工作,工具,最新,网址,数据,信息,环境,linux怎么配置网络连接Linux 系统中,可以通过以下几种方法配置网络linux运行cmd命令?
linux运行cmd命令?,电脑,系统,状态,情况,环境,命令,单位,管理,设备,数据,电脑运行命令怎么打开电脑运行命令需要同时按下“win图标”键和“R”linux编译连接命令?
linux编译连接命令?,系统,代码,环境,工具,文件,资料,电脑,百度,终端,命令,在linux0.12系统中编译0.12内核时,使用什么命令1、linux的源码是在/