自作DLLへのDllImport #103

Open
ufcpp opened this Issue Oct 15, 2016 · 0 comments

Projects

None yet

1 participant

@ufcpp
Owner
ufcpp commented Oct 15, 2016 edited

cfbad06

C++側のお作法をちょっと解説足した方がいいかも。

  • extern "C"
    • DllImportで呼べるのはC形式の関数だけ
    • C++関数だと、オーバーロードのためにコンパイラーの実装依存の変な記号とかが入ったりしてportabilityない
  • __stdcall とか、CallConvention
    • 呼び出し規約とは何かから説明?
    • これも実装依存。なので、__ から始まるVC++独自キーワードが必要
  • C# の string と、 BSTR とか null 終端文字列とかの話
    • 形式が互換なんで、実はマーシャリング時にコピー不要。string はポインターで渡る
      • C++側で書き換えるとC#側に結果が反映されちゃう(stringはimmutableに見えて、書き換える方法が存在する)
    • Ansi 相手の時だけコピー発生するはず
    • ちなみに、C++ 側が char (1バイト)のときを Ansi、wchar_t (2バイト)の時を Unicode って呼んでる
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment