-1

情况如下:

我制作了一个带有function1的dll,如下所示:

int function1( char *inVal, char *outVal)
{
....
strcpy(outVal,dn.commonname.c_str());
}

在最后一行 outVal 指向 dn.commonname ,它是一个字符串。

我使用 LoadLibrary 成功将此 dll 加载到另一个 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;  
 }

但问题并没有解决。任何线索?

4

1 回答 1

3

You declare a local variable shadowing the argument:

string outVal = outValPtr;

Well, it's almost shadowing the argument, because the spelling of the names are different. A variable named outVal is not the same variable as one named outval. Names in C++ are case-dependent.

于 2013-03-05T07:19:46.763 回答