1

私のアルゴリズムには C と asm コードが含まれています。このアルゴリズムを C# アプリケーションで呼び出す必要があります。C および asm コードを DLL に変換し、それを C# コンソール アプリケーションで呼び出すことができるかどうか疑問に思っていました。しかし、結合された C と asm コードのアルゴリズムを DLL に変換する方法がよくわかりません。どんな助けでも大歓迎です。

PInvoke を使用して C# で DLL を呼び出す方法を知っています。私の問題は、結合された C と asm コードを DLL に変換することです。extern "C" と dllexport を使用しようとすると、VS 2010 でエラーが発生し続けます。90以上のエラーがあります!! ほとんどのエラーは、私が使用したものを C++ がサポートしていないことを訴えるものです (C では有効ですが)。たとえば、次のコード行のように:

const u8 *error_string_base="ERROR: "; 

を与える

エラー C4430: 型指定子がありません -int が想定されています。注 C++ は default-int をサポートしていません

4

2 に答える 2

2

はい、C# から DLL 内のアンマネージ コードを呼び出すことができます。

Platform Invocation Services (PInvoke) を使用すると、DLL に実装されているアンマネージ関数をマネージ コードで呼び出すことができます。

http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx

C# から直接 DLL エクスポートを呼び出すトピックをご覧になることをお勧めします。

http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx#pinvoke_callingdllexport

更新(編集に基づく)

アプリケーションを C++ モードではなく C モードでコンパイルする

プロパティに移動 -> c/c++ -> 高度 -> compile as を選択し、'c' を選択します。

于 2012-07-19T02:51:14.960 に答える
0

より良い方法は、Dll アプリケーション (COM dll またはその他) を作成し、VC++ でコードを記述することです。これは C に非常に似ており、このように asm コードをマージすることもできます。

 __asm {
         mov al, 2
         mov dx, 0xD007
         out dx, al
       } 

、私は__asmキーワードを使用することを意味します.dllアプリケーションの作成は大したことではありません..これにはネット上に多くのリソースがあります.DLLのインポートとエクスポートには多くの制約があります。そのため、コードはエラーを吐き続けます.

于 2012-07-19T03:14:57.937 に答える