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