2014-09-21 60 views
1

我在使用VS2012的Windows 8.1上。嵌入單聲道:找不到mono-2.0.dll

我想關注http://www.mono-project.com/docs/advanced/embedding/將Mono CLR嵌入到C項目中。有些問題之後,我現在編譯它。 我曾經在文章中的DEF文件:http://github.com/mono/mono/blob/master/msvc/mono.def 請注意,該文件說:LIBRARY單2.0.dll

當我運行它,我得到一個錯誤,單2.0.dll無法定位。

我已經安裝了mono-3.2.3,並且在任何地方都看不到mono-2.0.dll。

  1. 單聲道.dll實現mono_xxx API(如mono_jit_init)?
  2. 我是否需要設置env-vars使操作系統知道單聲道文件夾?

我有點擔心的是單聲道,2.0的文件指出,是老版本和「mono」,應使用 - 但mono.dll也不存在...

回答

3

看到這個答案: Getting/compiling Mono-2.0.dll for embedding

您正在查找的庫可能位於單聲道安裝文件夾的bin目錄中。事實上,在安裝後mono 3.2.3中有MONO_INSTALLATION_PATH \ bin \目錄中兩個庫:libmonoboehm-2.0.dll和libmonosgen-2.0.dll(必須選擇BoehmSGen GC實現)

(鏈接BoehmSGen現在重定向到同一網頁)

我從來沒有使用在Windows嵌入式單(我一直使用Linux),但也許在你.def文件中更改這些庫名稱程序將工作。

例如,對於伯姆您必須下載mono.def和編輯這樣說:

; file generated by create-windef.pl 
LIBRARY libmonoboehm-2.0.dll 
EXPORTS 

對於SGEN,只要下載monosgen.def和編輯它以這樣的方式

; file generated by create-windef.pl 
LIBRARY libmonosgen-2.0.dll 
EXPORTS 
+0

之間有什麼區別他們倆?它仍然說它無法找到程序集(現在是libmonosgen-2.0.dll)。我需要設置一個環境變量嗎? – obiwanjacobi 2014-09-21 16:44:30

+0

@obiwanjacobi關於第一個問題:不同之處在於GC的實現。 SGen應該比Boehm好。關於第二個:這取決於你如何編譯你的程序。例如:你有什麼路徑用於'CFLAGS'和'LDFLAGS'選項?或者更好:你用什麼命令編譯和鏈接你的程序? – Gooseman 2014-09-21 17:11:12

+0

我不知道什麼是CFLAGS和LDFLAGS。我只是在VS2012中設置了這個項目。查看編譯器和鏈接器的命令行,不使用FLAGS(C或LD)。但我將bin文件夾添加到PATH環境變量中,並且不再發生該錯誤(現在完全不同);-)。 – obiwanjacobi 2014-09-21 17:24:07