从另一个dll中的dll获取字符串

时间:2013-03-05 07:17:11

标签: c++ c string loadlibrary

情况如下:

我在内部使用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;  
 }

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

1 个答案:

答案 0 :(得分:3)

声明一个遮蔽参数的局部变量:

string outVal = outValPtr;

嗯,它几乎影响了参数,因为名称的拼写是不同的。名为outVal的变量与名为outval的变量不同。 C ++中的名称与案例有关。