• ICE3.1.1 开发中遇到的问题(四)


    到目前为止,Ice的最新版本是3.4.1。

    不过Ice3.1.1是Zeroc发布的最后一个支持windows2000的官方版本。为了兼容windows2000,我不得不把我的程序分成2个版本,一个用vs2008+ice3.4进行编译。

    一个用vc6.0+3.1.1进行编译。

    中间遇到不少问题,归纳如下。

    1、在使用Ice3.1.1 源码版本时,需要先对Ice3.1.1进行编译。

        编译方法: 用vc6打开源码下面的all.dsw, 打开tools->option->Directories.设置Ice的 include目录,lib目录,bin目录

           编译all的时候include目录不能够包含2003 psdk的路径,否则会报很多错误,如果你实在需要使用2003psdk,那么最好先删除psdk的include路径,等编译完成之后再加进来。

    2、程序编译

     Ice编译完成之后,对自己写的代码编译,如果自己的代码用到了2003psdk的话,这时候把sdk的include路径包含进来,另外不要忘记stlport的include路径。如果编译出现错误

    C:\ICE-3.1.1-THIRDPARTY-VC60\INCLUDE\STLPORT\stl/_threads.h(181) : error C2733: second C linkage of overloaded function 'InterlockedIncrement' not allowed
            C:\ICE-3.1.1-THIRDPARTY-VC60\INCLUDE\STLPORT\stl/_threads.h(181) : see declaration of 'InterlockedIncrement'

    则需要打开C:\Ice-3.1.1-ThirdParty-VC60\include\stlport\stl_user_config.h

     将这2个开关打开

    /*
     * You should define this macro if compiling with MFC - STLport <stl/_config.h>
     * then include <afx.h> instead of <windows.h> to get synchronisation primitives
     *
     */

     # define _STLP_USE_MFC 1 //不用mfc的可以不管这个


    // boris : this setting is here as we cannot detect precense of new Platform SDK automatically
    // If you are using new PSDK with VC++ 6.0 or lower, please define this to get correct prototypes for InterlockedXXX functions
    # define _STLP_NEW_PLATFORM_SDK 1

    另外还有一些常见错误的编译选项目,比如Project->Setting->link里面library modules:Ice.lib IceUtil.lib

    Project Options  /GR /MDd

    Project->Setting->C/C++里面的Project Options:_WIN32_WINNT=0X500

    另外我还遇到一个问题,debug版本没有任何问题,但是用release版本一运行就出错。

    后来发现是我在release版本里面用了/MDd参数进行编译, 在release版本中应该使用/MD

    看来当初出现问题的时候没有了解这个参数具体的意思,现在才终于整明白了。

  • 相关阅读:
    2017-2018-1 20145237、20155205、20155218实验一 开发环境的熟悉
    作业三总结
    作业二总结
    作业总结1
    自我介绍
    计科16-4刘悦
    第九次作业
    作业八
    作业七
    作业六
  • 原文地址:https://www.cnblogs.com/bingxuefly/p/1756889.html
Copyright © 2020-2023  润新知