标准Dll文件,返回字符串

来源:百度知道 编辑:UC知道 时间:2024/06/08 04:19:15
标准的Dll文件如何处理字符串?要求导出的函数根据输入参数的不同,返回不同的字符串,输入的参数为unsigned char型的数组,根据数组第三个元素的值来返回不同的字符串,
例如第三个元素的值为2,则返回this is 2!
如果第三个元素的值为3,则返回this is 3!
这个函数该怎么写呢?请高手指点
那么在MFC中怎么把这个char指针型的数据转换成CString型的呢?

在VC中可以在动态库源码中这样写:
char g_szText[1024];

__declspec(dllexport) const char * __stdcall FuncName(const unsigned char *p)
{
sprintf(g_szText, "this is %u !", (unsigned int) p[2]);
return g_szText;
}
__declspec(dllexport)表示该函数要被输出,__stdcall表示参数传递方式,一般动态库都用这个,这个函数就是返回动态库中的一个全局变量的地址,当动态库被加载到你的程序中时,他也成了你程序的全局变量,不用担心内存问题。
在你的程序中可以用
__declspec(dllimport) const char * __stdcall FuncName(const unsigned char *p);声明一下就可以用了。
另外,extern "C"也是需要的,但是如果你程序和DLL用的是一种语言一个编译器编的就无所谓了,并且__stdcall也是无所谓了。

char *szText = "dfsdfd";
CString str(szText);就可以。另外,CString提供好多成员函数实现这个东西。

不知道是不是这样,我dll都是用BC写的,没试过VC的
..."值"是什么意思?

extern "C" __declspec(dllexport) char* __stdcall func(unsigned char* str)
{
char tmp[15] = strcat("this is ",str[3]);
return strcat(tmp,"!");
}

不对的话,幸勿见怪...

要写个程序生成dll文件?
不知道