DELPHI7.0调用VC++6.0的DLL遇到兼容性问题 以CString为参数的接口函数只有MFC程序才会支持。建议改用VARIANT或者BSTR做接口 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用VC再封装一个DLL来转一下,至少能解决你目前问题. VC的接口改动工作量太大,时间来不及。最初也考虑再用一个DLL转一下,但因为内部工作的原因,还是想尽量用其他方法解决。 这几天我在用DELPHI7.0编写程序去调用VC++6.0的DLL,DLL是用MFC做的,在调用过程中遇到许多兼容性问题:(1)DELPHI的 String与VC的CString不兼容,造成调用以CString为参数的接口函数失败,总是提示访问0地址出错。---------------------VC里面不用CString,而用STL的string. 用Delphi的PChar类型接string.c_str();这样应该没有问题。或者传递char[],CString可以转成char[]。(2)DELPHI的浮点型数组竟然与VC的浮点型数组也不兼容。---------------------这个我没有遇见。(3)在避开上述相关函数的调用,勉强调用其他函数成功的情况下,在退出DELPHI的主程序时,有时会提示访问非法地址的错误。---------------------似乎是没有释放资源的问题。特别是作为参数传递的数组,最好是在Delphi里面创建,然后在Delphi这边释放。(个人习惯) CString是MFC独有的数据类型,在其他语言中不可能识别。使用标准类型作为参数,例如BSTR和VARIANT。 或者有什么其他的办法?因为那些VC的DLL是无法在短时间内改动的,而且又要赶工期。有什么快速的办法可以解决吗? 或者有谁知道CString的内存分配情况?如果知道这个就应该能做了吧。 或者有什么其他的办法?因为那些VC的DLL是无法在短时间内改动的,而且又要赶工期。有什么快速的办法可以解决吗? D7如何控制WORD2003另存为到指定目录? 请大家谈谈即时通迅工具的架构与注意事项,来者有分! 如果让控件的事件调用自己编写的过程或者函数? 求教关于仪表软件开发平台的设计思路 串口自动接收数据的问题? 超级捡分的问题!! 讨论,delphi+win98和delphi+win2000的不同 一个不能理解的问题!! 用过F1book的大虾看过来 初学者如何学习DEPHI 在人事系统中,记录中有 出生日期 字段,如何求出所有员工的平均年龄? 求助:我设置 窗体的 windowstate 为 wsMaximinzed ,运行后,需要单击我附件中那个做了标记的东西,不起作用!谢谢!
最初也考虑再用一个DLL转一下,但因为内部工作的原因,还是想尽量用其他方法解决。
---------------------
VC里面不用CString,而用STL的string. 用Delphi的PChar类型接string.c_str();这样应该没有问题。或者传递char[],CString可以转成char[]。(2)DELPHI的浮点型数组竟然与VC的浮点型数组也不兼容。
---------------------
这个我没有遇见。(3)在避开上述相关函数的调用,勉强调用其他函数成功的情况下,在退出DELPHI的主程序时,有时会提示访问非法地址的错误。
---------------------
似乎是没有释放资源的问题。特别是作为参数传递的数组,最好是在Delphi里面创建,然后在Delphi这边释放。(个人习惯)