首页
社区
课程
招聘
[讨论]msvcr90.dll的问题
2011-7-10 16:16 14993

[讨论]msvcr90.dll的问题

2011-7-10 16:16
14993
最近手头一个项目编了一个DLL,用vs2008编译中发现要用到msvcr90.dll。
于是上网google解决办法,有人说先用static mfc编译,再用标准windows library编译就可以了。结果按照这种方法尝试多次,还是会导入msvcr90.dll。无语。。哪位朋友遇到过类似情况?
给说说啥原因

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (14)
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
游戏蛀虫 2011-7-10 16:29
2
0
**  没分 打击回答积极性啊

1,你的项目首先不要放在这个 FAT32 格式的盘里面  。这个是VS2008 的问题
2,如果还是不行的话,去下载一个放到 SYSYTEM32文件里面

我刚刚恢复了哈哈哈 希望你能解决
如果还是不行。  你把错误在百度里卖年搜索,有哥叫你安装  xxx_x86.exe那个东西
XXX表示忘了什么名字了
雪    币: 70
活跃值: (64)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
yiyiguxing 1 2011-7-10 16:41
3
0
不是安装盘的问题。。我安装在NTFS里了。。放一个到SYSTEM32下。。囧

你最后说的那个xxx是什么东东。。
雪    币: 540
活跃值: (264)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
KiDebug 4 2011-7-10 20:56
4
0
安装VC6.0,到X:\Program Files\Microsoft Visual Studio\VC98\Lib里面把MSVCRT.LIB拷贝到你的项目下,头文件里面声明#pragma comment(lib,"MSVCRT.lib")。不过这样就不能用/GS什么的了。

或者直接用VC6.0编译。
雪    币: 962
活跃值: (1541)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
loqich 2011-7-10 20:57
5
0
........c运行库选多线程
雪    币: 111
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ronging 2011-7-10 22:41
6
0
不大确定LZ的意思。你是想你程序不使用msvcr90.dll这个库嘛?这可是C库,除非你的程序不使用C库中的API,不过大多数C库中的API都就对应的Win32 API,这个是有可能的。
另外,这个是C库,和MFC没什么关系。
雪    币: 70
活跃值: (64)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
yiyiguxing 1 2011-7-10 22:51
7
0
直接用VC6.0编译。。一大堆错误。。很费时间
雪    币: 70
活跃值: (64)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
yiyiguxing 1 2011-7-10 22:52
8
0
如果选MT这么简单能解决,我就不用上论坛特意发个帖子了。。呵呵
雪    币: 70
活跃值: (64)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
yiyiguxing 1 2011-7-10 22:53
9
0
这个是可以不用的,据我所知。。可以用/MT方法,去掉对这个DLL的依赖。。但是我这里没成功。
雪    币: 111
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ronging 2011-7-10 22:56
10
0
LZ,给你看个链接,希望对你有帮助。

If you build test2.cpp using the /MT (or /MTd, for a debug build) compiler option, your program will link with LIBCMT.LIB (or LIBCMTD.LIB, for debug build) and LIBCPMT.LIB (or LIBCPMTD.LIB, for debug build), in addition to other libraries.
If you build test2.cpp using the /MD (or /MDd, for a debug build) compiler option, your program will link with MSVCRT.LIB (or MSVCRTD.LIB, for debug build) and MSVCPRT.LIB (or MSVCPRTD.LIB, for debug build), in addition to other libraries.
For Microsoft Visual C++ 2008, your program will be dependent on MSVCR90.DLL and MSVCP90.DLL (or MSVCR90D.DLL and MSVCP90D.DLL for debug build).

http://support.microsoft.com/kb/154753/en-us
雪    币: 111
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ronging 2011-7-10 22:59
11
0
如果是win32的程序,可以不使用C库,直接在选项里将C库去掉,有kernel32, user32, advapi这些库的API足够了。你可以去尝试一下,不过这个答案对你来说显然现在来不及了。

另外,你要看看你的应用有没有使用其它的DLL,这些DLL有没有对vs2008的运行时库有依赖。
雪    币: 242
活跃值: (418)
能力值: ( LV11,RANK:188 )
在线值:
发帖
回帖
粉丝
XPoy 3 2011-7-11 00:31
12
0
安装VC6.0,到X:\Program Files\Microsoft Visual Studio\VC98\Lib里面把MSVCRT.LIB拷贝到你的项目下,头文件里面声明#pragma comment(lib,"MSVCRT.lib")。不过这样就不能用/GS什么的了。

或者直接用VC6.0编译。
这样是不行的罢。编译器的一些语法支持不一样,为了用新版的编译器编译出来小点的文件,我还把VS 2010的整个头文件,源代码,库的目录原始的都删除,换成VC6的目录,但最后还是编译出来一大顿错误,当然这样的情况,不可能是去一一解决的了。只复制库文件的话,肯定会因为头文件里的函数等声明不一样和多出来的声明而在连接时出现很多找不到的符号。
想要编译一个自己可以控制大小的程序,当然不能用MFC,ATL这种有隐藏剧情的东西,最好从入口点就可以自己写,用到了一些MFC的类时候,把它复制出来成一份源码编译进去就好。
雪    币: 150
活跃值: (116)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
乱乱 1 2011-7-11 11:14
13
0
如果用了mfc 直接选择 静态链接mfc就可以了
没用mfc的话工程->属性->C/C++->代码生成->运行库->/MT
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
busy 2011-7-11 11:23
14
0
有可能是你的代码什么地方显示的在link MSVCRT.LIB 这个lib,你试试排除对这个lib的link
雪    币: 962
活跃值: (1541)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
loqich 2011-7-11 13:14
15
0
这个才是正解。。。
游客
登录 | 注册 方可回帖
返回