回答編集履歴

2

マーシャリングにリンク追加

2018/03/19 07:38

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -34,4 +34,4 @@
34
34
 
35
35
  ---
36
36
 
37
- もし、既にネイティブ・プラグイン自体をC言語I/Fで開発されていて、Unityから呼び出した時に正常に動作しないのであれば、マーシャリングに失敗している可能性が高いです。特に文字列型についてはUnityは恐らくUTF16ではないでしょうか? C++側もそれに合わせたコードになっていないと正常には動作しないと思います。
37
+ もし、既にネイティブ・プラグイン自体をC言語I/Fで開発されていて、Unityから呼び出した時に正常に動作しないのであれば、[マーシャリング](http://dalmore.blog7.fc2.com/blog-entry-62.html)に失敗している可能性が高いです。特に文字列型についてはUnityは恐らくUTF16ではないでしょうか? C++側もそれに合わせたコードになっていないと正常には動作しないと思います。

1

追記

2018/03/19 07:38

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -29,3 +29,9 @@
29
29
  [Unityのマニュアル](https://docs.unity3d.com/ja/current/Manual/NativePlugins.html)によると「プラグインの関数は C 言語に基づいたコール·インタフェース(C-based call interface)を使用するので、C++や Objective-C を使用した場合はネーム・マングル(name mangling)の問題を避けなければなりません。」ということですので、直接STLを呼び出すことは事実上出来ません。
30
30
 
31
31
  使っているSTLの関数全てについて、[マングリング](https://ja.wikipedia.org/wiki/%E5%90%8D%E5%89%8D%E4%BF%AE%E9%A3%BE)を手で解決する必要があります。これは現実的ではないと思います。
32
+
33
+
34
+
35
+ ---
36
+
37
+ もし、既にネイティブ・プラグイン自体をC言語I/Fで開発されていて、Unityから呼び出した時に正常に動作しないのであれば、マーシャリングに失敗している可能性が高いです。特に文字列型についてはUnityは恐らくUTF16ではないでしょうか? C++側もそれに合わせたコードになっていないと正常には動作しないと思います。