- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试将应用程序与 mono 3.2.3 捆绑到一个独立的可执行文件中。为此,我正在关注 this准则。声明变量后:
mono_version="3.2.3"
export MONO=/cygdrive/c/progra~2/Mono-$mono_version
machineconfig=$PROGRAMFILES\\Mono-$mono_version\\etc\\mono\\4.5\\machine.config
export PATH=$PATH:$MONO/bin
export PKG_CONFIG_PATH=$MONO/lib/pkgconfig
export CC="i686-pc-mingw32-gcc -U _WIN32"
mkbundle --deps 命令无法本地化引用的程序集:
Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'gtk-sharp' or
one of its dependencies. The system cannot find the file specified.
File name: 'gtk-sharp'
使用 mono 2.10.9 执行完全相同的操作:
mono_version="2.10.9"
export MONO=/cygdrive/c/progra~2/Mono-$mono_version
machineconfig=$PROGRAMFILES\\Mono-$mono_version\\etc\\mono\\4.0\\machine.config
export PATH=$PATH:$MONO/bin
export PKG_CONFIG_PATH=$MONO/lib/pkgconfig
export CC="i686-pc-mingw32-gcc -U _WIN32"
mkbundle --deps --machine-config "$machineconfig" -c UI.exe
给出积极的结果:
OS is: Windows
WARNING:
Check that the machine.config file you are bundling
doesn't contain sensitive information specific to this machine.
Sources: 3 Auto-dependencies: True
embedding: C:\users\piotr\desktop\authoringtool\UI\bin\debug\UI.exe
config from: C:\users\piotr\desktop\authoringtool\UI\bin\debug\UI.exe.config
embedding: C:\PROGRA~2\MONO-2~1.9\lib\mono\gac\gtk-sharp\2.12.0.0__35e10195dab3c99f\gtk-sharp.dll
embedding: C:\PROGRA~2\MONO-2~1.9\lib\mono\gac\glib-sharp\2.12.0.0__35e10195dab3c99f\glib-sharp.dll
.
.
.
embedding: C:\PROGRA~2\MONO-2~1.9\lib\mono\4.0\Mono.Posix.dll
Machine config from: C:\Program Files (x86)\Mono-2.10.9\etc\mono\4.0\machine.config
Compiling:
as -o temp.o temp.s
有人知道这种行为的原因吗?我正在使用 64 位版本的 Windows 7 和我在官方网站上找到的 Cygwin。代码在 Xamarin Studio 4.2 和 Visual Studio 2010 上编译和测试。
最佳答案
使用单声道 4.0.3 测试
在 mono 4.0.3 中,mkbundle 可以工作,但要让它工作可能很棘手。
首先,检查您的设置:
# M_PREFIX refers to Mono installation
# For more information, search for prefix installation in Mono documentation
M_PREFIX='/cygdrive/c/Mono'
export DYLD_FALLBACK_LIBRARY_PATH=${M_PREFIX}/lib:${DYLD_FALLBACK_LIBRARY_PATH}
export LD_LIBRARY_PATH=${M_PREFIX}/lib:${M_PREFIX}/lib/mono/4.5:${LD_LIBRARY_PATH}
export C_INCLUDE_PATH=${M_PREFIX}/include:${C_INCLUDE_PATH}
export ACLOCAL_PATH=${M_PREFIX}/share/aclocal:${ACLOCAL_PATH}
export PKG_CONFIG_PATH=${M_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}
# Here we added the system32 to make cmd available to mkbundle
# /usr/bin is the default location for mingw
export PATH=${M_PREFIX}/bin:/cygdrive/c/Windows/system32:/usr/bin:${PATH}
export CC="i686-pc-mingw32-gcc -U _WIN32"
然后你可以运行:
mkbundle --deps --keeptemp my.exe my.dll -o bundled.exe
注意事项: - 将 mono-2.0.dll
复制到应用程序目录中,因为它应该与捆绑的 exe 一起分发
cp ${M_PREFIX}/bin/mono-2.0.dll .
-z
,则还应复制 zlib1.dll。 (请注意 gcc 调用也会更改)。根据您对框架功能的使用情况,您可能需要更多 dll(并非详尽列表:libglib*.dll、libgmodule*.dll、libgthread*.dll、iconv.dll、intl.dll)-c
用于只生成 stub 。--keeptemp
将保留 temp.c 和 temp.s,如果 mkbundle 在 gcc 调用时失败,这可能会派上用场。i686-pc-mingw32-gcc -U _WIN32 -g -o output.exe -Wall temp.c $(pkg-config --cflags --libs mono-2) temp.o
要使控制台应用程序正常工作,您必须从 gcc 命令中删除 -mwindows。为此,您必须调用 pkg-config --cflags --libs mono-2
并删除 -mwindows
。
之后你应该得到类似的东西:
i686-pc-mingw32-gcc -g -o output.exe -Wall temp.c -mms-bitfields -IC:/Mono/include/mono-2.0 -mms-bitfields -LC:/Mono/lib -lmono-2.0 -lws2_32 -lpsapi -lole32 -lwinmm -loleaut32 -l advapi32 -lversion temp.s
mkbundle 是一个开源的 C# 控制台应用程序 ( on mono github )因此可以根据您的需要轻松修改和重新编译它。阅读代码也有助于理解其底层工作原理。
cmd 用法,因为 mkbundle 使用的不同命令是硬编码的,因此它将受益于一些参数化增强。
关于c# - 如何使 "mkbundle --deps"选项与单声道 3.2.3 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22226519/
我想在我的 android 应用程序中播放 PCM 音频数据。网络上有很多示例,但仅用于单 channel ,我有 4 个 channel (如本问题标题所述)。 当我设置 AudioTrack au
我正在尝试通过 channelsplitter 将立体声音频路由到具有增益控制的 6 个 channel ,然后返回到 channelMerger,以控制 5.1 组的所有 6 个 channel .
我试图从 iPhone XS 的所谓立体声后置麦克风中获取两个 channel ,但在 AVAudioSession 的不同点上只能看到一个 channel 。和 AVAudioSessionPort
我是一名优秀的程序员,十分优秀!