情况如下:
我在内部使用function1制作了一个dll,如下所示:
int function1( char *inVal, char *outVal)
{
....
strcpy(outVal,dn.commonname.c_str());
}
在最后一行outVal指向dn.commonname,这是一个字符串。
我已成功将此dll加载到LoadLibrary的另一个dll中。在第二个dll我有:
int function1(string inval, string &outVal)
{
typedef int (WINAPI *func1Ptr)(char *, char *);
char outValPtr[128] = {0};
int retVal = func1Lnk((char *)inVal.c_str(), outValPtr);
string outVal = outValPtr;
}
现在,我在我的代码中加载第二个dll并调用fnuction1,但是当我检查函数的第二个参数时,我得到NULL。
有人能说清楚这个吗?
修改-1
我将代码更改为:
int function1(string inVal, string &outVal)
{
typedef int (WINAPI *func1Ptr)(char *, char *);
char outValPtr[128] = {0};
int retVal = func1Lnk((char *)inVal.c_str(), outValPtr);
outVal = outValPtr;
}
但问题没有解决。任何线索?
答案 0 :(得分:3)
声明一个遮蔽参数的局部变量:
string outVal = outValPtr;
嗯,它几乎影响了参数,因为名称的拼写是不同的。名为outVal
的变量与名为outval
的变量不同。 C ++中的名称与案例有关。