首先,我是一名 C# 程序员,所以我对 C++ 的工作知识相当有限。大学的时候拿回来了,10年没碰过,如果是比较简单的东西请见谅。
我正在尝试制作一个可以在 C# 中使用的 DLL,它实现了 libwpd 库。
我设法创建了一个 DLL,它导出了我可以通过 P/Invoke 访问的 2 个函数。第一个返回一个常量整数(由 Visual Studio 作为示例生成),第二个返回一个字符串。
如果我从函数返回一个常量字符串,它会成功传递给 C#,我可以在另一端读取它,所以我知道数据正在被传回。
我遇到的问题是 libwpd。我不得不修改他们的 TextDocumentGenerator.cpp 文件以将信息添加到 char* 而不是使用他们使用的 printf 以便我以后可以访问它。
我已将变量定义添加到头文件的公共部分,以便我可以从调用代码中读取它。
现在,我正在尝试编写一个函数,允许我将 libwpd 提供的 char* 添加到外部 char* 中。
我想出了这个:
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++ 中创建程序,所以我什至可以通过这些函数来查看发生了什么。
任何援助将不胜感激。