teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

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

2018/03/19 07:38

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -16,4 +16,4 @@
16
16
  使っているSTLの関数全てについて、[マングリング](https://ja.wikipedia.org/wiki/%E5%90%8D%E5%89%8D%E4%BF%AE%E9%A3%BE)を手で解決する必要があります。これは現実的ではないと思います。
17
17
 
18
18
  ---
19
- もし、既にネイティブ・プラグイン自体をC言語I/Fで開発されていて、Unityから呼び出した時に正常に動作しないのであれば、マーシャリングに失敗している可能性が高いです。特に文字列型についてはUnityは恐らくUTF16ではないでしょうか? C++側もそれに合わせたコードになっていないと正常には動作しないと思います。
19
+ もし、既にネイティブ・プラグイン自体をC言語I/Fで開発されていて、Unityから呼び出した時に正常に動作しないのであれば、[マーシャリング](http://dalmore.blog7.fc2.com/blog-entry-62.html)に失敗している可能性が高いです。特に文字列型についてはUnityは恐らくUTF16ではないでしょうか? C++側もそれに合わせたコードになっていないと正常には動作しないと思います。

1

追記

2018/03/19 07:38

投稿

Chironian
Chironian

スコア23274

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