我编写了 C 程序,计算波函数的时间步迭代,以求解时间相关的 Schr\xc3\xb6dinger 方程。\n在某些步骤中,我需要进行前向和后向快速傅立叶变换 (FFT),我使用了库Kissfft。\ n(https://github.com/mborgerding/kissfft)
\n我的程序结构有点像这样:
\n现在,当我编译inttest_analytical.c它时,它可以工作。\n但是当之后尝试运行可执行文件时,我收到以下错误:
(base) user TDSE % ./inttest_analytical\ndyld: Library not loaded: libkissfft-double.dylib\n Referenced from: /Users/user/Documents/Uni/HU Berlin/Computational Physics 2/Project 3 - Time-dependet Schroedinger Equation/TDSE/./inttest_analytical\n Reason: image not found\nzsh: abort ./inttest_analytical\nRun Code Online (Sandbox Code Playgroud)\n运行后otool -L ./inttest_analytical我得到
/inttest_analytical:\n libkissfft-double.dylib (compatibility version 0.0.0, …Run Code Online (Sandbox Code Playgroud) 尝试在OSX上加载Lua模块时,我收到以下错误.
lua: level1.lua:1: module 'libexpand_luaLib' not found:
no field package.preload['libexpand_luaLib']
no file './libexpand_luaLib.lua'
no file '/opt/local/share/lua/5.1/libexpand_luaLib.lua'
no file '/opt/local/share/lua/5.1/libexpand_luaLib/init.lua'
no file '/opt/local/lib/lua/5.1/libexpand_luaLib.lua'
no file '/opt/local/lib/lua/5.1/libexpand_luaLib/init.lua'
no file './libexpand_luaLib.so'
no file '/opt/local/lib/lua/5.1/libexpand_luaLib.so'
no file '/opt/local/lib/lua/5.1/loadall.so'
stack traceback:
[C]: in function 'require'
level1.lua:1: in main chunk
[C]: ?
Run Code Online (Sandbox Code Playgroud)
lua解释器正在尝试加载.so文件而不是.dylib文件.我的印象是.dylib是.so的OSX等效(略有变化).所以我希望Lua解释器能够查找.dylib文件.
我是否应该尝试将我的库编译成OSX上的.so?(如果是这样的话?)或者我应该更改与lua解释器相关的内容?
我有一个Objective C静态库,我试图使用btouch导入MonoTouch.我遇到的问题是,库依赖于libz.dylib和libxml2.dylib,我不知道如何在我的MonoTouch应用程序中包含这些框架.
我在XCode项目中测试了静态库,这个测试应用程序编译并正确运行.我现在正在尝试在MonoTouch中构建完全相同的示例应用程序,并且在获取正确的gcc_flags参数时遇到问题,以便包含所有依赖项.
在XCode应用程序中,需要包含以下框架:
UIKit.framework
CFNetwork.framework
CoreGraphics.framework
Foundation.framework
MobileCoreServices.framework
SystemConfiguration.framework
libz.dylib
libxml2.dylib
Run Code Online (Sandbox Code Playgroud)
此外,在XCode中,我必须包含以下搜索路径才能找到所有必需的头文件:"$(SDK_DIR)"/ usr/include/libxml2
现在,在MonoTouch中,我在构建选项下的gcc_flags中设置了以下内容:
-v -v -v -gcc_flags "-framework CFNetwork -framework CoreGraphics -framework Foundation -framework MobileCoreServices -framework SystemConfiguration -I${ProjectDir}/lib/include -I$(SDK_DIR)/usr/include/libxml2 -L${ProjectDir}/lib/ -lOfflineRequest -force_load ${ProjectDir}/lib/libOfflineRequest.a"
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,我得到一个很长的链接错误列表,据我所知,这是由链接期间未包含的libz.dylib和libxml2.dylib引起的.有谁知道如何确保这些包含在MonoTouch中?
我有一个全新的Mac OS 10.7.2安装.我已经安装了SVN,但是,当我尝试调用Subversion时,我收到错误:
dyld: Library not loaded: /usr/lib/libpq.5.dylib
Referenced from: /opt/subversion/bin/svn
Reason: no suitable image found. Did find:
/usr/lib/libpq.5.dylib: no matching architecture in universal wrapper
/usr/lib/libpq.5.dylib: no matching architecture in universal wrapper
Run Code Online (Sandbox Code Playgroud)
我试图搜索错误,看起来该库主要由PostreSQL(我也已安装)使用,但运行正常.我有点困惑为什么SVN会试图调用这个库,还有为什么它失败了.
各种用户组在线声明解决方案是创建一个指向"真正的"PostgreSQL安装的符号链接,但我已经做到了.(另请参阅:subclipse)我已经重新安装了SVN和PostgreSQL两次,没有任何错误.任何帮助,将不胜感激.
我有一个IPA文件,其中包含info.plist,可执行文件,package.info,供应证书,动态库,代码资源等.我想知道首先执行哪个文件以及执行发生的顺序.我想在IPA中添加一些内容,为此我需要了解现有IPA的工作原理.
提前致谢.
我在使用某个特定的库时遇到了一些麻烦,我正在尝试测试旧版本是否能解决我的问题.使用存储在.app文件附近的dylib文件动态链接库.这些dylib文件到处都是,我不完全确定我的应用程序实际上正在使用我试图让它使用的那些.
在visual studio上,您可以在调试应用程序时轻松查看已加载的dll文件列表.Xcode中是否有类似的功能?
我在执行file命令时看到了32位和64位的dylib .我如何在Clang建造一座?
-m32标志创建32位dylib,-m64创建64位,但使用它们都不起作用.
编辑:例如,这是file我正在尝试构建的dylib类型的输出
file /Library/Frameworks/SDL.framework/Versions/A/SDL
/Library/Frameworks/SDL.framework/Versions/A/SDL: Mach-O universal binary with 2 architectures
/Library/Frameworks/SDL.framework/Versions/A/SDL (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
/Library/Frameworks/SDL.framework/Versions/A/SDL (for architecture i386): Mach-O dynamically linked shared library i386
Run Code Online (Sandbox Code Playgroud) 我正在尝试链接libssl.a和libcrypto.aXCode命令行项目中的静态库[在Link Binary With Libraries下].我在搜索路径中包含了Openssl头文件.
编译成功但执行失败dyld: Library not loaded: /usr/local/ssl/lib/libcrypto.1.0.0.dylib.
当我静态链接它时,为什么它会寻找dylib?怎么解决这个问题?
任何帮助都会很明显.
我正在开发一个在Xcode之外开发的macOS dylib框架,我正在尝试理解该install_name选项的重要性.
例如,我可以将该LC_ID_DYLIB部分设置为name更像是在应用程序包的框架中使用install_name类似的参数.
clang++ ... -install_name @executable_path/../Frameworks/somelib.framework/Versions/somelib ...
Run Code Online (Sandbox Code Playgroud)
然后otool -l我可以看到我的名字已经在二进制文件中设置,与默认值不同(默认情况下与-o选项匹配).
otool -l somelib
...
cmd LC_ID_DYLIB
cmdsize 96
name @executable_path/../Frameworks/somelib.framework/Versions/A/somelib (offset 24)
time stamp 1 Wed Dec 31 19:00:01 1969
current version 1.0.0
compatibility version 1.0.0
....
Run Code Online (Sandbox Code Playgroud)
所以我理解如何设置它,但我不明白的是用什么值来确定它应该是什么,我也找不到任何文档.
我可以看到为什么这些LC_LOAD_DYLIB部分需要有关在哪里找到二进制文件的信息(因为这些部分引用了其他二进制文件),但为什么dylib需要有关在哪里找到自己的信息?链接它的二进制文件应该是找到它的二进制文件吗?
那么macOS dylib究竟是LC_ID_DYLIB install_name做什么的呢?
我有一个Rust项目,我想作为dylib嵌入到另一个应用程序中。我已经crate_type = ["dylib"]设置了Cargo.toml,但是不确定是否应该这样做cdylib。
当我构建项目时,它会按预期产生libfoo.dylibin target/debug,但查看otool -L它也会与libfoo.dylibin 链接target/debug/deps/。如果要在另一个应用程序中使用它,是否需要同时提供两个dylib?
同样,当crate类型cdylib为时,它也会产生两个dylib,但是deps中的一个将在文件名的末尾添加一个哈希值。我不确定这两种板条箱类型之间的区别是什么。
我可以只使用rustc来避免获得两个dylib,但是我想使用货物。建议将Rust作为dylib嵌入其他应用程序的推荐方式是什么?
如果那很重要,我正在macOS 10.12上使用Rust
dylib ×10
macos ×5
clang ×2
xcode ×2
c ×1
c# ×1
embed ×1
executable ×1
gcc ×1
ios ×1
ipa ×1
iphone ×1
kissfft ×1
lua ×1
mach ×1
mach-o ×1
monodevelop ×1
openssl ×1
postgresql ×1
rust ×1
rust-cargo ×1
svn ×1
xamarin.ios ×1