일부 관리 코드 (C#으로 작성)를 사용하는 C++/CLI DLL이 있습니다. DLL에서 순수한 C 함수를 내보내려고합니다. LoadLibrary
및 GetProcAddress
을 사용하여 비 관리 코드에서 호출됩니다..NET 코드를 사용하는 C++/CLI DLL에서 C 함수 내보내기
내 보낸 함수에서 인스턴스를 만들고 C# 클래스의 메서드 하나만 호출하면됩니다. 그래서 난이 시도 :
extern "C" __declspec(dllexport) int __stdcall DoWork(
const wchar_t* Param1,
int Param2,
void* Param3)
{
WorkerNamespace::ManagedClass1 worker;
return worker.DoWork(gcnew String(Param1), Param2, IntPtr(Param3));
}
그것은 잘 컴파일하지만 난 dumpbin CompiledDll.dll /exports
을 수행 할 때 더 내 보낸 함수가 없습니다.
함수 선언 앞에 #pragma unmanaged
을 추가하려고했지만 본문에서 관리되는 유형을 사용하는 데 오류가 발생했습니다.
나는 빈 스텁 (단지 return 1;
)와 #pragma unmanaged
와, 여전히이 dumpbin
에 표시되지 않는 기능을 함수의 본문을 교체합니다. 그래서 내가 뭘 잘못하고 있니? C++/CLI 클래스 라이브러리 프로젝트에서 C 함수를 내보내려면 어떻게해야합니까?
질문에 대답하지 않습니다. 실제 구성 문제는 무엇입니까? –
@HansPassant 원래 클래스 라이브러리 템플릿을 사용하여 프로젝트를 만들었습니다. 그게 내가 게시 한 것과 다른 점은 모르겠다. 그것이 공개 질문 인 이유입니다. – Alex