none
请教VC2008和VC2010编译同一代码,但是需要连接不同平台的VCredist问题 RRS feed

  • 问题

  •      我在网上下载了一个开源软件的代码,然后分别用VC2008和vc2010编译,(2008和2010安装在同一个操作系统内,系统是Win7 X64,软件本身带有2008和2010的工程文件)两个编译都正常完成无报错无警告,然后,我把编译完成的两个执行文件拷贝到另一台干净系统的机器上,系统同样为win7 X64, 然后分别运行得到的两个文件,其中由VC2008编译完成的可以正常运行,但是vc2010编译完成的确需要我安装一个32位的VCredist组件,请问我该如何使用2010编译出只需要安装64位的vcredist就能运行的软件呢?同样的代码。使用2008编译就能得到只安装vcredist x64就能正常运行的执行文件~~

    请问该从哪里找问题呢?

    2011年2月10日 8:36

答案

  • 可能是Win7只默认包含了VC9的MFC库。但是VC10下编译的程序需要依赖于VC10的MFC库。所以需要VCredist。你可以使用静态链接MFC库。这样就可以在不同的环境下运行了。


    麻烦把正确答案设为解答。
    • 已标记为答案 netcap 2011年2月15日 10:23
    2011年2月11日 3:56
    版主
  • Hi netcap,

    据我所知,Microsoft Visual C++ 2010 x86 Redistributable 必需安装vc2010运行库vcredist_x86.exe 。

                   若是Microsoft Visual C++ 2010 x64 Redistributable 则必需安装vc2010运行库vcredist_x64.exe 。

    安装这个运行组件库之后,能够使用户能够在没有安装Visual C++ 2010的电脑上运行使用由Visual C++ 开发的应用程序。

     

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 netcap 2011年2月15日 10:22
    2011年2月14日 10:38
    版主
  • Hi netcap,

    请您尝试以下步骤来修改vs2010的属性,再重新编译程序试试。

    .在vs2010的Solution Explorer 中 右击项目名称->选择Properties

    .在弹出的Property Pages对话框中选择Configuration Properties->Linker->Advanced;

    . 在右边Target Machine 中选择MachineX64(/MANCHINE:X64)

    如果您的问题解决了,请把有用的回答标记为答案。

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 netcap 2011年2月15日 10:22
    2011年2月15日 8:55
    版主

全部回复

  • 可能是Win7只默认包含了VC9的MFC库。但是VC10下编译的程序需要依赖于VC10的MFC库。所以需要VCredist。你可以使用静态链接MFC库。这样就可以在不同的环境下运行了。


    麻烦把正确答案设为解答。
    • 已标记为答案 netcap 2011年2月15日 10:23
    2011年2月11日 3:56
    版主
  • 抱歉 我没有描述清楚,是这样的:同样的代码,在同一个系统内分别使用vc2008和vc2010编译,然后把得到的文件放到另一台机器中运行(同样是win7 x64) 这时候 ,由vc2008编译出来的需要安装vcredist (32位和64位任意一个版本都行),但是vc2010编译出来的确必须要vcredist x86 我想问的是 ,软件依赖32位还是64位版本是如何决定的,在什么地方设置? 如果软件本身是32位的 ,但是在64位的系统上到底应该依赖哪个(32位还是64位)?

    2011年2月11日 7:12
  • 32位的软件一般都会依赖32位的库。
    麻烦把正确答案设为解答。
    2011年2月14日 2:36
    版主
  • Hi netcap,

    据我所知,Microsoft Visual C++ 2010 x86 Redistributable 必需安装vc2010运行库vcredist_x86.exe 。

                   若是Microsoft Visual C++ 2010 x64 Redistributable 则必需安装vc2010运行库vcredist_x64.exe 。

    安装这个运行组件库之后,能够使用户能够在没有安装Visual C++ 2010的电脑上运行使用由Visual C++ 开发的应用程序。

     

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 netcap 2011年2月15日 10:22
    2011年2月14日 10:38
    版主
  • Hi Lucy,

     

    非常感谢您的帮助,这正是我想知道的~~

    另外, 我还想知道的是:像这个定义一般是在工程文件中的什么地方引用的呢?能随便给个给个例子好吗

    因为,我由同一个源代码 分别用VC2008 和VC2010 编译 vc2008得到的结果是 只要安装VCredist x86 和X64中的任意一个就可以正常运行~~ 但是vc2010 编译得到的结果是 :只有安装vcredist x86才能运行(同一个代码) 那么 我要改动哪里才能使它依赖Vcredist 64bit 就能正常运行呢?也就是把原来依赖x86 vcredist的地方改成依赖 x64~~ (确定依赖X64 vcredist能正常运行的 因为vc2008编译出来的就能 现在是想使用vc2010也能编译出依赖x64 Vcredist的版本)

    感谢帮助!

    netcap

     

    2011年2月15日 1:54
  • Hi netcap,

    请您尝试以下步骤来修改vs2010的属性,再重新编译程序试试。

    .在vs2010的Solution Explorer 中 右击项目名称->选择Properties

    .在弹出的Property Pages对话框中选择Configuration Properties->Linker->Advanced;

    . 在右边Target Machine 中选择MachineX64(/MANCHINE:X64)

    如果您的问题解决了,请把有用的回答标记为答案。

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 netcap 2011年2月15日 10:22
    2011年2月15日 8:55
    版主
  • 非常感谢您的的帮助,问题解决了~~ 再次感谢您!
    2011年2月15日 10:21
  • Hi netcap,

    不用谢,很高兴您的问题解决了,祝贺您。

    欢迎以后再来微软中文论坛发帖。

     

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年2月16日 2:44
    版主