получить строку из dll внутри другой dll

Вот случай:

Я сделал DLL с function1 внутри, как показано ниже:

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

в последней строке outVal указывает на dn.commonname, которое является строкой.

Я загрузил эту DLL в другую DLL с LoadLibrary успешно. Во второй 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.

Кто-нибудь может пролить свет на это?

EDIT-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

Решение

Вы объявляете локальную переменную, скрывающую аргумент:

string outVal = outValPtr;

Ну, это же почти отслеживание аргумента, потому что написание имен отличается. Переменная с именем outVal не та же переменная, что и названная outval, Имена в C ++ зависят от регистра.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]