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

回答編集履歴

3

問題なし

2019/11/27 11:55

投稿

asm
asm

スコア15149

answer CHANGED
@@ -30,7 +30,7 @@
30
30
  MessageBox.Show(s);
31
31
  ```
32
32
 
33
- 解放どうなってんのかちょっと心配だが
33
+ ~~解放どうなってんのかちょっと心配だが~~
34
34
 
35
35
  ---
36
36
  **追記** 返り値もできた

2

追記

2019/11/27 11:55

投稿

asm
asm

スコア15149

answer CHANGED
@@ -30,4 +30,23 @@
30
30
  MessageBox.Show(s);
31
31
  ```
32
32
 
33
- 解放どうなってんのかちょっと心配だが
33
+ 解放どうなってんのかちょっと心配だが
34
+
35
+ ---
36
+ **追記** 返り値もできた
37
+
38
+ ```c++
39
+ LPSAFEARRAY GetVs_return() {
40
+ CComSafeArray<BSTR> result;
41
+ std::vector <std::string> arry = { "hoge1","hoge2","hoge3" };
42
+ for (const auto& s : arry)
43
+ result.Add(A2BSTR(s.data()));
44
+ result.Add(A2BSTR("hoge4"));
45
+ return result.Detach();
46
+ }
47
+ ```
48
+
49
+ ```c#
50
+ [return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_BSTR)]
51
+ internal static extern string[] GetVs_return();
52
+ ```

1

修正

2019/11/27 09:12

投稿

asm
asm

スコア15149

answer CHANGED
@@ -20,7 +20,7 @@
20
20
  ```c#
21
21
  static class MyEx {
22
22
  [DllImport("mytest.dll")]
23
- static extern void GetVs([MarshalAs(UnmanagedType.SafeArray, afeArraySubType=VarEnum.VT_BSTR)] out string[] strings);
23
+ static extern void GetVs([MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_BSTR)] out string[] strings);
24
24
  }
25
25
  ```
26
26