いつもお世話になってます。
DLLを作成する機会がでたので初めてDLLに挑戦しています。
関数・構造体の呼び出しかたは調べて理解することができてました。
###やりたいこと
自作DLL内にある関数を呼び出す際に
引数として文字列の配列を渡したい
###調べてわかったこと
メモリの確保をするためにメモリのマーシャリングが必要だということがわかりました。
その際に、Marshalクラスの関数を使うことで実現ができるということがわかりました。
下記参考URL
http://qiita.com/ask/items/ee2ff5b8706effc0c3d8
###わからないこと
上記記事はint型の配列ですが、配列が文字列である場合、どの様な記述をすればよいか
記事を転々としましたが、望む回答を得ることができませんでした。
以下コードです。
C
1[DLL] 2#define TRUE 1 3 4 5INT WINAPI DllMain(HANDLE,DWORD,LPVOID){ 6 return TRUE; 7} 8 9int TestArray(char *test){ 10 char *testt; 11 testt = (char*)malloc(sizeof(test)); 12 for(int i = 0;i<5;i++){ 13 printf("%s",testt[i]); 14 } 15 return 0; 16}
C#
1[呼び出し] 2 class Program 3 { 4 static string[] mrl = { "a", "b", "c", "d", "e"}; 5 [DllImport("TestArrayDLL.dll")] 6 private extern static void TestArray(string[] mrl); 7 static void Main(string[] args) 8 { 9 //ここでMarshalクラスを使う?? 10 TestArray(mrl); 11 Console.ReadLine(); 12 } 13 }
コードを見る限り、基礎がまだ理解できてないと思っています。
参考になる記事等あると助かります。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/29 07:07
2016/08/29 07:31