我在 Windows 上,我正在尝试Main.exe
使用 Mono C# 编译器编译的提前编译gmcs
(也尝试过mcs
)。
>mono --aot Main.exe
Mono Ahead of Time compiler - compiling assembly C:\test\Main.exe
Code: 21 Info: 4 Ex Info: 8 Class Info: 30 PLT: 2 GOT
Info: 6 GOT Info Offsets: 8 GOT: 12
Executing the native assembler: as C:\DOCUME~1\MigueldeIcaza\LOCALS~1\Temp\mono_aot_D2 ID2U -o C:\DOCUME~1\MigueldeIcaza\LOCALS~1\Temp\mono_aot_D2ID2U.o
Executing the native linker: gcc -shared --dll -mno-cygwin -o C:\test\Main.exe.dll C:\DOCUME~1\MigueldeIcaza\LOCALS~1\Temp\mono_aot_D2ID2U.o
Compiled 2 out of 2 methods (100%) Methods without GOT slots: 2 (100%)
Direct calls: 0 (100%) JIT time: 0 ms, Generation time: 0 ms,
Assembly+Link time: 319 ms. GOT slot distribution:
image: 1
但这会产生一个Main.exe.dll
并且我想要一个可执行文件。那可能吗?
更新:
我通过写保护拦截了 AOT/构建过程Main.exe.dll
,现在我有一个mono_aot_FZKP2U.o
但仍然没有运气:
>gcc -o Main2.exe mono_aot_FZKP2U.o
/mingw/lib/libmingw32.a(main.o):main.c:(.text+0x104):
undefined reference to `WinMain@16'
collect2: ld returned 1 exit status`
2009 年 10 月 30 日更新:
在阅读了 Jb Evains 的回答后,我再次尝试使用单声道运行 Main.exe.dll,但没有成功。
C:\test>mono Main.exe.dll Mono-INFO:Assembly Loader 探测位置:'C:\PROGRA~1\MONO-2~1.3\lib\mono\1。 0\mscorlib.dll'。 Mono-INFO: Image addref mscorlib 003E5F48 -> C:\PROGRA~1\MONO-2~1.3\lib\mono\1.0 \mscorlib.dll 00B42BC0: 2 Mono-INFO:AOT 无法加载 AOT 模块 C:\PROGRA~1\MONO-2~1.3\lib\mono\1.0\msc orlib.dll.dll:系统找不到指定的文件。 Mono-INFO:Assembly Loader 从以下位置加载程序集:'C:\PROGRA~1\MONO-2~1。 3\lib\mono\1.0\mscorlib.dll'。 Mono-INFO:尝试解析的配置:'C:\PROGRA~1\MONO-2~1.3\lib\mono\1.0\msco rlib.dll.config'。 Mono-INFO:尝试解析的配置:'C:\PROGRA~1\MONO-2~1.3\lib\..\etc\mono\a ssemblies\mscorlib\mscorlib.config'。 Mono-INFO:程序集 mscorlib 003E5F48 添加到域 Main.exe.dll,ref_count=1 Mono-INFO:尝试解析的配置:'C:\PROGRA~1\MONO-2~1.3\lib\..\etc\mono\c 配置'。 Mono-INFO:Assembly Loader 探测位置:“Main.exe.dll”。 无法打开程序集“Main.exe.dll”:文件不包含有效的 CIL 图像。 Mono-INFO:卸载域 Main.exe.dll 00B04EA0,程序集 mscorlib 003E5F48,r efcount=1 Mono-INFO:卸载程序集 mscorlib [003E5F48]。 Mono-INFO: 卸载图像 C:\PROGRA~1\MONO-2~1.3\lib\mono\1.0\mscorlib.dll [00B 42BC0]。