0

C#アプリケーションを作成しました。このアプリケーション内で、別のプロジェクトのC ++ APIを使用/実行したいと思います(APIはマクロコーディングで記​​述されています)。そのC++プロジェクトのdllをインポートして、そのAPIに属する関数を呼び出そうとしました。問題は、「メソッドが見つかりません」というエラーがスローされることです。

C#プロジェクトでC ++プロジェクトを実行するにはどうすればよいですか?

4

2 に答える 2

2

管理対象プロジェクトへの参照としてネイティブDLLを追加することはできません。3つの主なオプションがあります。

  1. p/invokeでネイティブ関数を使用できるようにします。
  2. COMを介してネイティブコードを公開します。
  3. ネイティブコードをマネージC++アセンブリとしてコンパイルします。

深刻な量のコードの場合、オプション3が最も生産的で効果的なアプローチです。

于 2012-04-17T06:48:06.550 に答える
1

「実行中」とは、別のプロセスを意味します。

System.Diagnostics.Process .NETで利用可能なクラスを使用します。

myProcess.StartInfo.FileName = "notepad.exe";
myProcess.StartInfo.CreateNoWindow = false;
myProcess.Start();

それ以外の場合、C ++で開発されたdllを使用する場合は、次を使用できますPlatform Invoke Services

using System;
using System.Runtime.InteropServices;

class PlatformInvokeTest
{
    //First param is of course either in your PATH, or an absolute path:
    [DllImport("msvcrt.dll", EntryPoint="puts", CallingConvention=CallingConvention.Cdecl)]
    public static extern int PutString(string c);
    [DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl)]
    internal static extern int _flushall();

    public static void Main() 
    {
        PutString("Test");
        _flushall();
    }
}
于 2012-04-17T06:31:11.353 に答える