经过多次验证,在VC中 ,如下程序在无论MFC DLL下,还是非MFC DLL下都是可行的,
都可以导出正确的 add和sub函数
_______dll.edf文件______
EXPORTS
add
sub
_______dll.h文件_________
extern int __declspec(dllexport)add(int,int);
extern int __declspec(dllexport)sub(int,int);
_______dll.cpp文件_______
#include"dll.h"
int add(int a,int b)
{
return sub(a,b)+b;
}
int sub(int a,int b)
{
return a-b;
}
问题在于如果把int 换成CString,虽然可以正确生成dll,导出函数
但存在两方面问题
1.如果CString 对象参与了运算,在exe使用时就一定会发生错误报告;
如:就连这个简单的函数也不行
CString outself(CString szText)
{
return szText;
}//其为DLL内要导出的函数
2.如果CString 对象没有参与运算,当函数返回类型为CString 时,返回一定要
大于等于两个字节
如:
CString out()
{
return "w";
}//在exe使用中就会发生错误报告
CString out()
{
return "ww";
}//不会发生错误报告
鄙人刚学,弄了一整天,百思不得解,是不是我在写DLL时别的代码没有完整所致,真不知道是什么回事?望高手指点