2017-10-13 201 views
-1

我有一個編譯/ clr支持(例如wrapper.dll)的c + +項目。這個項目(wrapper.dll)是.Net環境和unmaged dll(例如noCode.dll)之間的一個包裝,它是繼承自它的。我沒有訪問繼承DLL(noCode.dll)的代碼,但我可以將它鏈接到我的包裝(通過noCode.lib和noCode.h文件)。合併Win32 C++ dll與託管C++ dll

當我想在c#項目中使用我的包裝器(wrapper.dll)時,我將其引用爲,並且必須將我的非託管dll(noCode.dll)複製到c#項目執行的位置。

是否有可能合併C++ unmamaged DLL(noCode.dll)來管理DLL(wrapper.dll),以允許在C#項目引用(noCodeWrapper.dll)使用只有一個文件

回答

2

無法將DLL文件鏈接在一起。

但是,您可以將nocode.LIB添加到您的DLL中,然後您不需要[DllImport]。既然你有LIB和H文件,你可以直接從託管的C++代碼中調用「nocode」函數。

+0

是的,但仍然如果我在任何C#項目引用wrapper.dll我必須將nocode.dll複製到其工作目錄。我想知道是否有可能避免這種情況? – MAN

+0

您不能將包裝器和「nocode」合併在一起,但可以將包裝器和客戶端應用程序合併在一起。這樣你將只有client.exe和nocode.dll,但不包含wrapper.dll。 –

+0

好的。感謝您的澄清。附:爲什麼我有-1?我的問題如此明顯? – MAN

1

如果您有權訪問noCode.dll源代碼,則可以將其與wrapper.dll集成。否則,合併DLL二進制文件不是一個可以提供可預測結果的任務。