http://d.hatena.ne.jp/kasei_san/20070511
上記リンクの「バッドノウハウ」にあるように
DLL読み出し側のプロジェクトの「共通言語ランタイムサポート」が/clr:pureである場合に、
暗黙リンクでDLLを設定し、__declspec(dllimport) にてDLLのクラスをimportしようとすると、コンパイルエラーとなってしまいます。
「共通言語ランタイムサポート」が/clr:pureの場合の一般的なDLLの読み出し方法をご存知の方よろしくお願いいたします。
Visual C++ コンパイラ オプション /clr (共通言語ランタイムのコンパイル) http://msdn2.microsoft.com/ja-jp/library/k8d11d4s(VS.80).aspx
CLRとは何かきちんと理解していますか?
/clr:pureオプションを使う場合、すべてはCLR上で動作するマネージドコードでなくてはならず、当然ネイティブコードを含むDLLを呼び出すこともできません。
つまり、質問されているような方法は不可能ということになります。
Visual C++ コンパイラ オプション /clr (共通言語ランタイムのコンパイル) http://msdn2.microsoft.com/ja-jp/library/k8d11d4s(VS.80).aspx
CLRとは何かきちんと理解していますか?
/clr:pureオプションを使う場合、すべてはCLR上で動作するマネージドコードでなくてはならず、当然ネイティブコードを含むDLLを呼び出すこともできません。
つまり、質問されているような方法は不可能ということになります。
なるほど…。CLRについての理解が不足していました。
/clr:pure だと、非clrな(すなわち、アンマネージドコード)なコードを読み出すことは、不可能なのですね。
ただ、下にあるように特定の条件を満たせば、読み出すことも不可能ではない…と。
どうもありがとうございます。
非常に参考になりました!
失礼しました。
上記の回答は、私の理解不足と早とちりにより正しい答えとは言えないようです。
/clr:pureでもアンマネージDLLを呼ぶことは可能のようですね。
ものすごく手短に調べた範囲では、
Some interop Questions - C# to unmanaged DLL http://www.thennews.com/d/n56/Some%20interop%20Questions%20C%20t...
などのポイントがあるようです。
細かい点で自分の理解もまだあやふやなので、この質問への私の回答に対するポイントは不要です。
いえいえ、私が理解していない部分について、回答いただけたので、ご迷惑で無ければ、ポイントを入れさせていただきます。
どうもありがとうございました。
なるほど…。CLRについての理解が不足していました。
/clr:pure だと、非clrな(すなわち、アンマネージドコード)なコードを読み出すことは、不可能なのですね。
ただ、下にあるように特定の条件を満たせば、読み出すことも不可能ではない…と。
どうもありがとうございます。
非常に参考になりました!