Прежде всего, я программист на C #, поэтому мои рабочие знания C ++ довольно ограничены. Я взял его обратно в колледж, но 10 лет не трогал, поэтому, пожалуйста, прости меня, если это относительно просто.
Я пытаюсь создать DLL, которую можно использовать в C #, которая реализует библиотеку libwpd.
Мне удалось создать DLL, которая экспортирует 2 функции, к которым я могу получить доступ через P / Invoke. Первый возвращает постоянное целое число (генерируется Visual Studio в качестве образца), второй - строку.
Если я возвращаю постоянную строку из функции, она успешно передается в C #, и я могу прочитать ее на другом конце, поэтому я знаю, что данные передаются обратно.
Проблема, с которой я сталкиваюсь, связана с libwpd. Мне пришлось изменить их файл TextDocumentGenerator.cpp, чтобы добавить информацию в char * вместо использования printf, который они используют, чтобы я мог получить к нему доступ позже.
Я добавил определение переменной в публичный раздел заголовочного файла, чтобы я мог прочитать его из вызывающего кода.
Теперь я пытаюсь написать функцию, которая позволяет мне добавлять символ *, заданный libwpd, к внешнему символу *.
Я придумал это:
char* addString(const char* addThis, char* toThis)
{
char* copier = (char*)malloc(strlen(toThis) + 1 + 1);
strcpy(copier, toThis);
strcpy(copier, "1");
toThis = (char*)malloc(strlen(copier) + 1);
strcpy(toThis, copier);
return copier;
}
Но когда я передаю информацию обратно, я получаю пустую строку.
Я вызываю функцию, вызывая totalFile = addString("\n", totalFile);
(я понимаю, что технически следует добавлять «1» в строку несколько раз, но это даже не так)
Если я изменю strcpy на strcat для строк копира, он блокируется.
Я не знаю, как создать программу на C ++, поэтому я могу даже просмотреть функции, чтобы увидеть, что происходит.
Любая помощь будет принята.