31 个解决方案
#1
DLL中用到了VS2005中的库,比如MSVCR80.dll等库,那就必须安装vs2008发布包,或者把这个动态库复制过去啊
#2
是这个原因
#3
这样也行吧:在工程的属性中,把共享dll换成使用静态库那个 然后再重新build下
#4
把你开发机上的C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\对应工程的动态库文件随EXE一起发布,可以不需要你所说的安装包!
#5
up
楼主缺少了一些依赖类库了
#6
VC2005的要求。
#7
有没有办法在编译时通过参数设置从而使编译出来的dll在运行时不依赖于VC的库。
#8
#3的方法,链接静态库。
#9
如果是静态库,那就没有DLL文件了。静态引用的话界面的exe会非常大的。
#10
静态方法就是会大,因为用到的DLL等已经link进你的exe了,不然就需要带上你用到的dll,就这么两种办法
#11
就这样吧.
#12
把几个DLL一起发布了吧,要是目标机子上没有,还是要装的
#13
我试了把MSVCR80.dll考到我的程序目录下,还是不行
#14
需要你开发机上的X86的对应工程下的几个动态库文件!
可以用release方式!
#15
我现在就是用release方式来编译的,所以自认为是不需要VC的库就可以直接运行的了,没想到还会出现这个问题。不知是不是我什么地方设置不正确,望指点一二。
#16
用静态链接
#17
静态库的方案不可能使用,如果这样的话我的EXE文件都要有几十兆了。所以必须用动态库。
#18
动态库方式,就要Release的exe,然后加上对应的mfc80.dll,mfc80p.dll...等各个dll
#19
怎样知道要用哪些dll。我的工程里并没有用到mfc、atl,在工程属性中我设置的是“Use Standard Windows Libraries”和“Not Using ATL”。
#20
那就带上vc runtime 的dll,msvcr80.dll,msvcm80.dll,msvcp80.dll这几个dll
#21
这个要怎样设置,能不能说详细一点。是在VC工程属性里设置吗?我试过把这三个dll放到我的运行目录下还是不行。
#22
用Depends看看,你的程序需要哪些DLL的支持。
#23
运行库放在同个目录下也可以的应该
#24
装就装被
#25
从Depends上看到需要以下几个库:
c:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\MSVCP80.DLL
c:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\MSVCR80.DLL
我已经把这两个库复制到我的程序目录下了,还是无法运行。
#26
我把msvcr80.dll,msvcm80.dll,msvcp80.dll这几个考到C:\WINDOWS\SYSTEM32里还不行。
#27
vc下有DEPENDS。EXE工具可以看PE程序里用的DLL文件
#28
我已经通过Depends查到就是需要msvcr80.dll,msvcm80.dll,msvcp80.dll这几个dll文件。现在的问题是要怎样把这几个文件打包到我的程序中?
我试过把几个文件考到我的程序目录下,也试过考到C:\WINDOWS\SYSTEM32下,还是不行。
#29
问题已经解决,只要在编译的时候设置以下工程属性就可以了:
c/c++->code generation->runtime library设置成/MT,linker->manifest file->generate manifest设置成no。
信息是从http://topic.csdn.net/u/20080131/14/06abd302-a469-4a4a-82ea-2fe3bfd2e102.html获取的。
c/c++->code generation->runtime library设置成/MT,linker->manifest file->generate manifest设置成no。
信息是从http://topic.csdn.net/u/20080131/14/06abd302-a469-4a4a-82ea-2fe3bfd2e102.html获取的。
#30
编译的时候带上 /mt 开关,就可以了
#31
...
#1
DLL中用到了VS2005中的库,比如MSVCR80.dll等库,那就必须安装vs2008发布包,或者把这个动态库复制过去啊
#2
是这个原因
#3
这样也行吧:在工程的属性中,把共享dll换成使用静态库那个 然后再重新build下
#4
把你开发机上的C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\对应工程的动态库文件随EXE一起发布,可以不需要你所说的安装包!
#5
up
楼主缺少了一些依赖类库了
#6
VC2005的要求。
#7
有没有办法在编译时通过参数设置从而使编译出来的dll在运行时不依赖于VC的库。
#8
#3的方法,链接静态库。
#9
如果是静态库,那就没有DLL文件了。静态引用的话界面的exe会非常大的。
#10
静态方法就是会大,因为用到的DLL等已经link进你的exe了,不然就需要带上你用到的dll,就这么两种办法
#11
就这样吧.
#12
把几个DLL一起发布了吧,要是目标机子上没有,还是要装的
#13
我试了把MSVCR80.dll考到我的程序目录下,还是不行
#14
需要你开发机上的X86的对应工程下的几个动态库文件!
可以用release方式!
#15
我现在就是用release方式来编译的,所以自认为是不需要VC的库就可以直接运行的了,没想到还会出现这个问题。不知是不是我什么地方设置不正确,望指点一二。
#16
用静态链接
#17
静态库的方案不可能使用,如果这样的话我的EXE文件都要有几十兆了。所以必须用动态库。
#18
动态库方式,就要Release的exe,然后加上对应的mfc80.dll,mfc80p.dll...等各个dll
#19
怎样知道要用哪些dll。我的工程里并没有用到mfc、atl,在工程属性中我设置的是“Use Standard Windows Libraries”和“Not Using ATL”。
#20
那就带上vc runtime 的dll,msvcr80.dll,msvcm80.dll,msvcp80.dll这几个dll
#21
这个要怎样设置,能不能说详细一点。是在VC工程属性里设置吗?我试过把这三个dll放到我的运行目录下还是不行。
#22
用Depends看看,你的程序需要哪些DLL的支持。
#23
运行库放在同个目录下也可以的应该
#24
装就装被
#25
从Depends上看到需要以下几个库:
c:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\MSVCP80.DLL
c:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\MSVCR80.DLL
我已经把这两个库复制到我的程序目录下了,还是无法运行。
#26
我把msvcr80.dll,msvcm80.dll,msvcp80.dll这几个考到C:\WINDOWS\SYSTEM32里还不行。
#27
vc下有DEPENDS。EXE工具可以看PE程序里用的DLL文件
#28
我已经通过Depends查到就是需要msvcr80.dll,msvcm80.dll,msvcp80.dll这几个dll文件。现在的问题是要怎样把这几个文件打包到我的程序中?
我试过把几个文件考到我的程序目录下,也试过考到C:\WINDOWS\SYSTEM32下,还是不行。
#29
问题已经解决,只要在编译的时候设置以下工程属性就可以了:
c/c++->code generation->runtime library设置成/MT,linker->manifest file->generate manifest设置成no。
信息是从http://topic.csdn.net/u/20080131/14/06abd302-a469-4a4a-82ea-2fe3bfd2e102.html获取的。
c/c++->code generation->runtime library设置成/MT,linker->manifest file->generate manifest设置成no。
信息是从http://topic.csdn.net/u/20080131/14/06abd302-a469-4a4a-82ea-2fe3bfd2e102.html获取的。
#30
编译的时候带上 /mt 开关,就可以了
#31
...