[求助]在写DLL时,如何使一个函数即可以在DLL内部被调用,又可以将其导出?
在写DLL时,如何使一个函数即可以在DLL内部被调用,又可以将其导出?高手知道说一下[em03][align=right][color=#000066][此贴子已经被作者于2006-2-8 17:59:43编辑过][/color][/align]
<P>好像不能吧,可能是因为类的缘故</P> <P>哦,那只能另找办法了,谢谢版主热心帮助[em28]</P> <P>经过多次验证,在VC中 ,如下程序在无论MFC DLL下,还是非MFC DLL下都是可行的,<BR>都可以导出正确的 add和sub函数<BR>_______dll.edf文件______<BR>EXPORTS<BR>add<BR>sub<BR><BR>_______dll.h文件_________<BR>extern int __declspec(dllexport)add(int,int);<BR>extern int __declspec(dllexport)sub(int,int);<BR><BR>_______dll.cpp文件_______<BR>#include"dll.h"<BR>int add(int a,int b)<BR>{<BR> return sub(a,b)+b;<BR>}<BR><BR>int sub(int a,int b)<BR>{<BR> return a-b;<BR>}<BR><BR>问题在于如果把int 换成CString,虽然可以正确生成dll,导出函数<BR>但存在两方面问题<BR> 1.如果CString 对象参与了运算,在exe使用时就一定会发生错误报告;<BR>如:就连这个简单的函数也不行<BR>CString outself(CString szText)<BR>{<BR> return szText;<BR>}//其为DLL内要导出的函数<BR><BR>2.如果CString 对象没有参与运算,当函数返回类型为CString 时,返回一定要<BR>大于等于两个字节<BR>如:<BR>CString out()<BR>{<BR> return "w";<BR>}//在exe使用中就会发生错误报告<BR><BR><BR>CString out()<BR>{<BR> return "ww";<BR>}//不会发生错误报告<BR><BR>鄙人刚学,弄了一整天,百思不得解,是不是我在写DLL时别的代码没有完整所致,真不知道是什么回事?望高手指点[em13]<BR></P> 用String型可以吗?
页:
[1]
