2010-08-19 20 views
7

我有一個DLL。和它的Visual C++源代碼。 (我的dll是一些ffmpeg av * libs - 另一個預編譯的dll)的可視化C++包裝,而在同一個解決方案(.sln)中,我有C#項目使用我的dll。對於我將項目移植到mono的一般步驟是什麼?

什麼是我將項目移植到mono的一般步驟?

+0

它是一個C++/CLI或託管C++ DLL? – 2010-08-19 19:18:11

+0

託管C++ DLL – Rella 2010-08-19 19:25:48

回答

3

編譯在Visual Studio項目,但啓用下列編譯器選項:

  • /CLR:純:這將使一個純粹的CLR組件(不帶任何的x86/x86-64的ASM),應該運行在單聲道,除非你使用一些C運行時調用(CRT)。
  • /clr:safe:與純粹相同,但不能有CRT引用,因此您的項目可能無法編譯。如果沒有,請將這些函數調用替換爲其他便攜式調用。

生成的程序集應該是純粹的CLR,並且可以與Mono一起使用。

This頁面包含編譯Mono版本時可能遇到的所有內容。

+0

他的包裝程序集的要點很可能在單個程序集(混合模式程序集)中混合使用託管代碼和非託管代碼。將程序集限制在CLR中會使其失敗。 – dtb 2010-08-19 20:35:35

-2

我也建議在此看一看 -

http://mono-tools.com/store/

有可以幫助你單端口的各種工具 - 你甚至可以在Visual Studio中的調試和打包以便在Linux上部署。

+0

我收到了一些消極的帖子,所以讓我向你保證 - 我不賣這個產品 - 我只是認爲它是一個好主意,看看工具,節省時間。 – 2010-08-20 04:33:00

+0

我認爲downvotes是因爲Mono根本不在Linux上運行混合模式程序集。 MonoTools在這裏沒有幫助。 – dtb 2010-08-20 12:34:45

4

Mono不支持非Windows操作系統上的混合模式程序集。

刪除您的C++包裝並重寫您的應用程序以僅使用P/Invoke調用本機代碼。

參見:www.mono-project.com/CPlusPlus