Когда я передаю char * в качестве параметра в DLL, я могу получить новый char *, когда я «возвращаю» char * из DLL, но я не могу этого сделать, просто используя этот параметр char * и ничего не возвращать.
Эта функция DLL в порядке, кажется, я могу передать char * в DLL.
void getStr(char *str){
print("%s\n", str);
}
Это тоже нормально. Кажется, я могу изменить указатель внутри DLL.
void setInt(int a, int b, int *sum){
*sum = a + b;
}
Но нет никакой удачи, когда указатель указывает на массив символов.
void setStr(char* str) {
char tmp[] = "From DLL";
int len = strlen(tmp) + 1;
str = (char*)malloc(len);
memcpy(str, tmp, len);
}
Я пытаюсь вызвать эту функцию DLL из программы на c ++, подобной этой:
int main()
{
char tmp[] = "Hello World!";
setStr(tmp); // I hope I can get "From DLL" here.
std::cout << tmp;
}
Вывод все еще "Hello World!", ничего не произошло после того, как я попытался получить новый char *. Если я устанавливаю возвращаемое значение функции DLL на char * и получаю возвращаемое значение в программе на c ++, все в порядке, но я не могу просто использовать параметр для этого.
Я что-то пропустил?