关于DLL动态库的问题
我设计了一个基于MFC AppWizard(dll->Regular Dll using shared MFC Dll的动态库.
试例代码如下://动态库代码
extern "C" __declspec(dllexport) char* Add(char* lpstr)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString str;
str=lpstr;
/*
.....这里是一段字符串处理代码.
*/
lpstr=(char*)(LPCTSTR)str;
return lpstr;
}
C#代码:
[DllImport("DllDemo.dll")]
public static extern string Add(string s);
private void Page_Load(object sender, System.EventArgs e)
{
string s=(Add("输入结果"));
Response.Write("s="+s);
}
我遇到的问题是:如果在DLL中我把lpstr的值赋给了str,然后在转换成char* 类型返回,则C#中接收到的字符串是乱码.如果lpstr的值不赋给CString对象str,直接返回,则正常.为什么会这样呢?要怎样转换呢?