描述:
我在别的应用程序中使用完全正常的动态库(我自己做的),在被 COM 组件服务端调用是就出错,错误出在给实参赋值时,参数是(CString& str),就执行 str.Format("%s","aaa") 时就出错,但在一般应用程序调用时却完全正常,我想是不是跟组件的“进程调度”有关,怎么办呢?
解决方案1:
注意一下又两个版本的CString, MFC & ATL,两边的包含应用不一样
解决方案2:
com 里面推荐用bstr.
如果你用LoadLibrary,那么,你所用的dll必然是纯c接口的,而纯c接口在接口中不支持CString。
建议隐式调用看看。
dll中导出函数不可以有引用类型,把它改成指针就可以了
解决方案4:把CString改成BSTR吧。COM是UNICODE的
解决方案5: CString& str???????///为什么要这样?CString str;str.format
&就不知道行不行了
CString内部是动态分配内存的,所以不能这样用
你可以把变量类型定义成char*来解决这个问题
还有看看您的COM是UNICODE的,DLL为MBCS,中间进行参数CString的传递
解决方案8:必须都是基本类型,字符串就用BSTR!