我有一個使用一些託管代碼(用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最初我使用'Class Library'模板創建了一個項目。我不知道這與我發佈的內容有什麼不同。這就是爲什麼它仍然是一個懸而未決的問題。 – Alex