C#アプリケーションを作成しました。このアプリケーション内で、別のプロジェクトのC ++ APIを使用/実行したいと思います(APIはマクロコーディングで記述されています)。そのC++プロジェクトのdllをインポートして、そのAPIに属する関数を呼び出そうとしました。問題は、「メソッドが見つかりません」というエラーがスローされることです。
C#プロジェクトでC ++プロジェクトを実行するにはどうすればよいですか?
管理対象プロジェクトへの参照としてネイティブDLLを追加することはできません。3つの主なオプションがあります。
深刻な量のコードの場合、オプション3が最も生産的で効果的なアプローチです。
「実行中」とは、別のプロセスを意味します。
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();
}
}