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

C++ 从另一个dll中的dll获取字符串,c++,c,string,loadlibrary,C++,C,String,Loadlibrary,情况如下: 我制作了一个包含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 &out

情况如下:

我制作了一个包含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;  
 }

但问题并没有解决。有什么线索吗?

您声明了一个隐藏参数的局部变量:

string outVal = outValPtr;

好吧,这几乎掩盖了论点,因为名字的拼写是不同的。名为outVal的变量与名为outVal的变量不同。C++中的名字是依赖于实例的。

如果你发现答案很有用,请点击点击左边的复选标记来接受它。那么我应该如何将值传递给参数?我看到小写V和大写V,所以我认为他不这样。但他并没有将小写的V-1设为任何值,所以基本上你是错的,但仍然是对的@Amir只需将参数赋值,不需要局部变量。@Amir将“string outVal=”更改为“outVal=”@Amir使用调试器逐步调试代码,以确保一切正常。此外,还应确保在DLL中复制的字符串长度不超过127个字符。