none
VC++2008里对于引用类型做接口参数的问题求教 RRS feed

  • 问题

  • 一些老的VC6编译的dll的一些接口里使用了像 CString& Invno, CString& bookdate 这样的参数用于回传信息,在VC6下调用定义好参数类型为 CString& 就可以使用了,但VC++2008的工程在使用相同方法调用时会出错,看起来应该是 dll里在写入这些空间时出错了,求解

    2010年7月14日 2:37

答案

  • 使用MFC做接口的话,代码是不可移植的,Debug版都不兼容Release版,更加不用说兼容其他版本的VC了。

    建议用标准的C做DLL接口。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 Nancy Shao 2010年7月21日 3:21
    2010年7月14日 14:57
    版主
  • 做接口的话一般都只传基本类型int, char*,float,double之类的.

    最好还是让对方提供不用CString这个类的接口.而是用const char*或者LPCTSTR


    0xBAADF00D
    • 已标记为答案 Nancy Shao 2010年7月21日 3:21
    2010年7月15日 5:41
    版主

全部回复

  • 使用MFC做接口的话,代码是不可移植的,Debug版都不兼容Release版,更加不用说兼容其他版本的VC了。

    建议用标准的C做DLL接口。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 Nancy Shao 2010年7月21日 3:21
    2010年7月14日 14:57
    版主
  • 看来要对方提供用2008编译的dll了,有没有关于在VC2008下使用引用做接口参数的资料?

    2010年7月15日 1:12
  • 做接口的话一般都只传基本类型int, char*,float,double之类的.

    最好还是让对方提供不用CString这个类的接口.而是用const char*或者LPCTSTR


    0xBAADF00D
    • 已标记为答案 Nancy Shao 2010年7月21日 3:21
    2010年7月15日 5:41
    版主
  • 也有个接口是使用了 LPCTSTR 的引用,dll也是VC6写的,调用它的exe是VC2008写的,也出现一样的错误

    2010年7月15日 9:06
  • LPCTSTR 在2008里面是unicode,在vc6里面是ANSI。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年7月15日 14:18
    版主