C++调用DLL运行时崩溃新手求指点

VB代码如下:
Public Declare Function D_DEAL_TEST_DATA_I Lib "TDC_DLL.dll" (ByVal TEST_TYPE As String, ByVal TEST_DATA As String, ByRef LOG_DATA As String) As Long

Dim mySFCS_BASIC As String
Dim StrTmp As String * 1000
mySFCS_BASIC = "N/A}N/A}N/A}N/A}N/A}N/A}"
flag = D_DEAL_TEST_DATA_I("GET_BASIC_INFO", mySFCS_BASIC, StrTmp)

运行时STRTMP会返回服务器回传的相关信息。

现在要用C++调用,代码如下:
typedef long( _stdcall * D_DEAL_TEST_DATA_I)(char* pTest_Type, char* pTest_Data, char* pLog_Data)
int main()
{
HINSTANCE hio;
CString csDLL, csTemp;
csDLL = "C:\TDC_DLL.dll";
hio = LoadLibrary(csDLL);
if (hio == NULL)
{
FreeLibrary(hio);
return false;
}
D_DEAL_TEST_DATA_I add;
add = (D_DEAL_TEST_DATA_I)GetProcAddress(hio, ("D_DEAL_TEST_DATA_I"));
char chTest_Type[] ="GET_BASIC_INFO";
char chTest_Data[] = "N/A}N/A}N/A}N/A}N/A}N/A}";

char *pLog_Data = new char[2048]
int nResult;
nResult = add(chTest_Type,chTest_Data,pLog_Data);
}

C++运行时程序会崩溃,pLog_Data 可变字符串在C++该如何操作,请大神指点,另在C# 中 pLog_Data定义为 StringBuilder可以运行,不会出错,就是在C++中,pLog_Data 定义各种字符串方式,程式都会崩溃。

首先确保你的函数申明是对的
typedef long( _stdcall * D_DEAL_TEST_DATA_I)(char* pTest_Type, char* pTest_Data, char* pLog_Data)
这种情况下,char* pLog_Data只要提供了足够大的字符串缓存地址即可。
若内部字符串是变化的,那你的函数申明有问题。最好看一下原始的函数定义。

在崩溃的地方下断点调试,看看什么错误。
无非就是指针没有分配,传入的指针无效或者野指针
参数范围无效
函数本身有问题,丢出了异常、断言
传入需要修改的地址,但是传入的是常量
如果是第三方dll,最好编写者能够提供你一个调用的例子,证明它那里没有问题
然后你确保你的参数和例子的一样,看看这样还会不会出错。