トップページ > プログラム > 2016年08月05日 > Vnpr4HzA

書き込み順位&時間帯一覧

26 位/213 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000110000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
ふらっと C#,C♯,C#(初心者用) Part123 [無断転載禁止]©2ch.net

書き込みレス一覧

ふらっと C#,C♯,C#(初心者用) Part123 [無断転載禁止]©2ch.net
155 :デフォルトの名無しさん[sage]:2016/08/05(金) 16:28:54.03 ID:Vnpr4HzA
C#からC++で書かれたDLLへのアクセスについて質問です。以下のようなコードなのですが、C#からアクセスした場合、hoge.hoge2 がセットされません。どこが悪いのでしょうか?
[C++側(DLL)]
typedef struct
{
    wchar_t hoge1[256];
    wchar_t hoge2[256];
} HOGE;
bool __stdcall func(HOGE* hoge)
{
    wcscpy_s(hoge->hoge1, 256, L"HOGE1");
    wcscpy_s(hoge->hoge2, 256, L"HOGE2");
    return true;
}
[C#側]
[StructLayout(LayoutKind.Sequential)]
public struct HOGE
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public Char[] hoge1;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public Char[] hoge2;
}
[DllImport("hoge.dll", EntryPoint = "func")]
public static extern bool func(int index, ref HOGE hoge);

hoge = new HOGE();
hoge.hoge1 = new Char[256];
hoge.hoge2 = new Char[256];
bool res = func(0, ref hoge);

hoge.hoge1 は "HOGE1"がセットされている。hoge.hoge2 は なにもセットされていない???
ふらっと C#,C♯,C#(初心者用) Part123 [無断転載禁止]©2ch.net
157 :デフォルトの名無しさん[sage]:2016/08/05(金) 17:04:53.51 ID:Vnpr4HzA
[C#側]
public static extern bool func(ref HOGE hoge);
でした。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。