zoukankan      html  css  js  c++  java
  • 用vc2010以上版本编译可以在低版本xp和2003的运行程序的方法

    一直以来倍受此事困拢,vc2010以上版本编译出的exe或dll总是会引用EncodePointer和DecodePointer两个api,这两个api在xp sp2以下版本上找不到,虽然这种版本用户较少,但总有人在用,微软这贱人又不考虑这种低端用,无奈之下,我用过3种方法,记录如下。

    1、使用vc2008的库,用2010的编译器。这种方法需要先找一份vc2008的库,而且在工程设置里面把默认的引用路径改为2008库的路径就好。

    2、安装一个vc2008版本,然后在2010的工程设置把平台工具集设为"v90"即可,这种方式兼容性最好,但不能用最新的c++语法,如auto等

    3、这是刚发现的,长期以来用上面两种方法,很不方便,尤其是第二种,需要装两个vs,痛苦万分,今天下决心再找一种简单的方式,于是在stackoverflow上搜到了这篇文章

    http://stackoverflow.com/questions/2484511/can-i-use-visual-studio-2010s-c-compiler-with-visual-studio-2008s-c-runtim

    这种方法相对较简单,用fasm下面这段代码编译为一个obj,然后再用link链接成一个lib,最后在vc工程里最先引用这个lib即可

    use32
    format ms coff
    
    section ".data" data
    public __imp__DecodePointer@4
    __imp__DecodePointer@4 dd dummy
    
    public __imp__EncodePointer@4
    __imp__EncodePointer@4 dd dummy
    
    section ".text" code
    dummy:
    mov eax, [esp+4]
    retn 4


    这种方法简单多了,vs2010和vs2012都通用,再也不用带着一个巨大无比的vc2008库,并且可以使用最新的c++语法

  • 相关阅读:
    Java实现二叉排序树
    servlet/filter/listener/interceptor区别与联系
    Java中创建对象的5种方式
    字符串练习
    成员变量、类变量、局部变量的区别
    强制清除gradle 缓存
    XML
    jQuery
    JavaScript
    CSS
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3221788.html
Copyright © 2011-2022 走看看