まず、私は C# プログラマーなので、C++ に関する実用的な知識はかなり限られています。大学時代に持って帰りましたが、10年以上触っていないので比較的簡単なものでしたらご容赦ください。
libwpd ライブラリを実装する C# で使用できる DLL を作成しようとしています。
P/Invoke 経由でアクセスできる 2 つの関数をエクスポートする DLL を作成できました。1 つ目は定数整数 (サンプルとして Visual Studio によって生成されたもの) を返し、2 つ目は文字列を返します。
関数から定数文字列を返すと、それは C# に正常に渡され、反対側で読み取ることができるので、データが返されていることがわかります。
私が直面している問題は、libwpd にあります。後でアクセスできるように、彼らが使用する printf を使用する代わりに、情報を char* に追加するように TextDocumentGenerator.cpp ファイルを変更する必要がありました。
ヘッダー ファイルの public セクションに変数定義を追加して、呼び出し元のコードから読み取ることができるようにしました。
今、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++ でプログラムを作成する方法がわからないので、関数をステップ実行して何が起こっているかを確認することさえできます。
任意の支援をいただければ幸いです。