【发布时间】:2012-05-29 23:52:11
【问题描述】:
我想在 Windows 上将 libmono 编译为静态库。
目标平台是 Windows x86。构建环境:Windows 7 64 位,VC++ Express 2010
我已经做了什么。
1) 已下载单声道 2.10.8 源。
2) 从 msvc 文件夹中打开 mono.sln 并确保一切都在编译。
3) 然后我做了一些改变:
3.1) 常规->项目默认值->配置类型:静态库(.lib)
3.2) 常规->项目默认值->使用 MFC:使用标准 Windows 库
3.3) C/C++->代码生成->运行时库:多线程 (/MT)
4) 构建它并且 VC++ 2010 成功创建了 mono-2.0.lib
5) 在我自己的项目(我想嵌入单声道)的链接器输入中添加它:
5.1) 常规->项目默认值->配置类型:应用程序 (.exe)
5.2) General->Project Defaults->Use of MFC: Use MFC in a Ststic Library
5.3)C/C++->代码生成->运行时库:多线程(/MT)
它似乎工作得近乎完美,但有一些可怕的问题:Mysterious behavior of Dictionary<TKey, TSource>
一切都做对了吗? 我应该指定任何其他编译器选项或预处理器指令吗?
P.S.: libmono 命令行是:
/I"..\libgc\include" /I"..\" /I"..\mono\" /I"..\mono\jit" /I"..\mono\eglib\src" /I"..\mono\eglib\src" /I"..\eglib\src" /Zi /nologo /W1 /WX- /O1 /Ob1 /Oi /Oy- /D "NDEBUG" /D "i386" /D "TARGET_X86" /D "i386" /D "WIN32" /D "_WIN32" /D "WIN32" /D "_WINDOWS" /D "WINDOWS" /D "HOST_WIN32" /D "TARGET_WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "GC_NOT_DLL" /D "HAVE_CONFIG_H" /D "WINVER=0x0500" /D "_WIN32_WINNT=0x0500" /D "_WIN32_IE=0x0501" /D "WIN32_THREADS" /D "FD_SETSIZE=1024" /D "default_codegen" /D "MONO_ASSEMBLIES=0" /D "_UNICODE" /D "UNICODE" /GF /Gm- /EHsc /MT /GS /Gy /fp:精确 /Zc:wchar_t /Zc:forScope /Fp".\Release/libmono.pch" /Fa"Win32\obj\libmono\" /Fo"Win32\obj\libmono\" /Fd"Win32\obj\libmono\vc100.pdb" /Gd /TC /analyze- /errorReport:queue
UPD:
我发现这个讨论与我的问题http://mono.1490590.n4.nabble.com/Mono-static-library-td3546774.html
它仍然是真实的吗? 我可以使用 SGen 代替 Boehm 吗?如果是,任何提示都非常感谢。 如果是的话,我可以使用 mono 作为静态库并使用 sgen 吗?
【问题讨论】:
-
这是一个奇怪的问题,考虑到您之前的问题显示了您如何通过静态链接运行单声道来击中您的脚。 stackoverflow.com/questions/10717406/…
标签: c++ c mono embed static-linking