C#アプリケーションでC++コードを使用する必要があります。私はpinvokeについて考えましたが、私は私のC++アプリケーションからDLLを作成するために取るべきアプローチと混同しています。 基本的には、私のC++アプリケーションは、データ処理の無限ループを実行するmain
関数です。私はそのようなことをdllにどのようにエクスポートしてC#から呼び出すことができるのか分かりません。main関数からdll(C++)関数をC言語で使用する方法#
私は、DLLのために、スタンドアロンinit
機能で私main
機能を書き換えるとC#から呼び出すしようとしましたが、その理由は、無限ループには、関数からreturn
でポイントに来たことはありません。そして、私のデータバッファをどこかの無限ループから私のC#アプリケーションにどのようにするかを知りません。
私は現在、何をやったか:
私はそれがこのFUNCから戻ることはありませんし、私のデータバッファを返す関数を、書き方をするので、C#のからOpenRTSPを呼び出す方法を知らない// myDLL.cpp
int __stdcall OpenRTSP(char url, char progname)
{
TaskScheduler* scheduler = BasicTaskScheduler::createNew();
UsageEnvironment* env = BasicUsageEnvironment::createNew(*scheduler);
if (openURL(*env, &progname, &url) < 0)
{
return -1;
}
// All subsequent activity takes place within the event loop:
// This function call does not return, unless programm closes.
env->taskScheduler().doEventLoop(&eventLoopWatchVariable);
return 0;
}
// myDLL.h
__declspec(dllexport) int __stdcall OpenRTSP(char url, char progname);
無限ループから?
私は、スタンドアロンプロセスが 'dllimport'よりもはるかに高速であることを発見しました。手伝ってくれてありがとう。また、他の人のことを明確にするために、私はC++とc#の間のパイプデータ転送でテストしました。 – Aleksey