gpt4 book ai didi

mono - 无法使用 mkbundle 编译简单的 C# 应用程序

转载 作者:行者123 更新时间:2023-12-04 10:21:35 25 4
gpt4 key购买 nike

我写了一些控制台“Hello world”之类的应用程序。并已关注 c# cywgwin mono mkbundle windows 7 - cannot compile file回答。但我有:

$ mkbundle -o Fur Furries.exe --deps -z
OS is: Windows
Sources: 1 Auto-dependencies: True
embedding: C:\Monotest\Furries.exe
compression ratio: 40.43%
embedding: C:\Soft\Mono\lib\mono\4.0\mscorlib.dll
compression ratio: 34.68%
Compiling:
as -o temp.o temp.s
gcc -mno-cygwin -g -o Fur -Wall temp.c `pkg-config --cflags --libs mono-2|dos2un
ix` -lz temp.o
temp.c: In function `main':
temp.c:173: warning: implicit declaration of function `g_utf16_to_utf8'
temp.c:173: warning: assignment makes pointer from integer without a cast
temp.c:188: warning: assignment makes pointer from integer without a cast
/tmp/ccQwnxrF.o: In function `main':
/cygdrive/c/Monotest/temp.c:173: undefined reference to `_g_utf16_to_utf8'
/cygdrive/c/Monotest/temp.c:188: undefined reference to `_g_utf16_to_utf8'
collect2: ld returned 1 exit status
[Fail]

它在 Windows XP 中。

最佳答案

首先准备开发环境:

  • 安装单声道。例如,您已将其安装到“C:\Soft\Mono”中。
  • 安装 Cygwin。选择要安装的软件包时,请选择以下内容:gcc-mingw、mingw-zlib、pkg-config、nano。
  • 启动 Cygwin Bash shell(使用链接或“bash --login -i”命令)。
  • 用“纳米”(“$HOME/.bashrc”)打开“nano ~/.bashrc”。不要使用不保留行尾(“CR”、“LF”、“CR/LF”或其他)的编辑器,否则会损坏文件!
  • 将以下行添加到文件末尾:
    export PKG_CONFIG_PATH=/cygdrive/c/Soft/Mono/lib/pkgconfig
    export PATH=$PATH:/cygdrive/c/Soft/Mono/bin
  • 重新启动 Cygwin Bash shell。

  • 之后,您可以使用“mkbundle”编译程序集:
  • 执行以下命令:“mkbundle -c -o host.c -oo bundle.o --deps YourAssembly.exe <additional arguments>”。您还可以选择传递“-z”来压缩结果包。你应该得到“host.c”和“bundle.o”文件。
  • 在“host.c”中,您应该删除“_WIN32”“分支”(“#include <windows.h>”除外)。它不起作用。您可以通过在其中的以下几行之后添加“#undef _WIN32 ”来实现:
    #ifdef _WIN32
    #include <windows.h>
    #endif

    所以你会得到:
    #ifdef _WIN32
    #include <windows.h>
    #endif
    #undef _WIN32
  • 执行以下命令:“gcc -mno-cygwin -o ResultantBundle.exe -Wall host.c `pkg-config --cflags --libs mono-2|dos2unix` bundle.o <additional arguments> ”。如果在步骤 2 中添加了 -z 附加参数,则必须在此步骤中添加 -lz 附加参数。
  • 您将获得“ResultantBundle.exe”。这是打包为独立可执行文件的 Mono 应用程序。
  • 它仍然需要“mono-2.0.dll”和一些额外的 DLL-s 和您在开发过程中依赖的资源(例如,它可能需要 GTK# native DLL-s)但它不需要完整的 Mono 运行时来运行。
  • 关于mono - 无法使用 mkbundle 编译简单的 C# 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4474613/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com