回答編集履歴
4
修正
test
CHANGED
@@ -20,4 +20,4 @@
|
|
20
20
|
|
21
21
|
1、2どちらの場合も、コピーした文字列の長さを返したほうがいいでしょう。
|
22
22
|
|
23
|
-
個人的には、1の方が解放用の関数用意しなくてい
|
23
|
+
個人的には、1の方が解放用の関数用意しなくて済みますし、Cの標準関数の実装に近いので好みです。
|
3
修正
test
CHANGED
@@ -16,4 +16,8 @@
|
|
16
16
|
|
17
17
|
1であれば、CppCode側でバッファ確保する必要はないでしょうし、呼び出し側からバッファのサイズも引数で渡すべきです。
|
18
18
|
|
19
|
-
2であれば、
|
19
|
+
2であれば、C#側でLPWStrを指定してるのはおかしいです。また、CppCodeで確保したメモリ解放用の関数も用意する必要があります。
|
20
|
+
|
21
|
+
1、2どちらの場合も、コピーした文字列の長さを返したほうがいいでしょう。
|
22
|
+
|
23
|
+
個人的には、1の方が解放用の関数用意しなくていいので良いと思います。
|
2
修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
0. 呼び出し側でバッファ
|
9
|
+
0. 呼び出し側でバッファ確保するのが前提
|
10
10
|
|
11
11
|
0. CppCode側でバッファ確保するのが前提
|
12
12
|
|
@@ -14,6 +14,6 @@
|
|
14
14
|
|
15
15
|
どちらなのでしょう?サンプルコードを見る限り、両方でバッファ確保しようとしてますが。
|
16
16
|
|
17
|
-
1であれば、CppCode側でバッファ確保する必要はないでしょうし、バッファのサイズも引数で渡すべきです。
|
17
|
+
1であれば、CppCode側でバッファ確保する必要はないでしょうし、呼び出し側からバッファのサイズも引数で渡すべきです。
|
18
18
|
|
19
19
|
2であれば、バッファの文字列の長さを返すなりしたほうがいいでしょうし、CppCodeで確保したメモリ解放用の関数も必要でしょう。
|
1
修正
test
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
まずDllImportの定義自体が引数の数が違ってるし、呼び出し規約も書いてないし、voidなのにreturnのマーシャリング定義してるし、色々間違ってる気がします。
|
2
|
-
|
3
|
-
あと、[ネイティブ相互運用性のベスト プラクティス](https://docs.microsoft.com/ja-jp/dotnet/standard/native-interop/best-practices)では、StringBuilderでの受け渡しは回避すべき項目として記述されています。
|
1
|
+
まずDllImportの定義自体が引数の数が違ってるし、呼び出し規約も書いてないし、voidなのにreturnのマーシャリング定義してるし、色々間違ってる気がします。あと、[ネイティブ相互運用性のベスト プラクティス](https://docs.microsoft.com/ja-jp/dotnet/standard/native-interop/best-practices)では、StringBuilderでの受け渡しは回避すべき項目として記述されています。
|
4
2
|
|
5
3
|
|
6
4
|
|