我的图书馆有个问题-- 苹果硅片上的DllNotFoundException。它现在是固定的,但我们观察到了一些奇怪的行为,试图在macOS上用苹果硅芯片运行简单的控制台应用程序:
sudo ./LoopbackDevice "MIDI A" "MIDI B" "MIDI C"
Password:
sudo: ./LoopbackDevice: command not foundLoopbackDevice绝对位于当前目录中(通过ls检查)。这里有一点: LoopbackDevice构建在基于英特尔的机器上,但使用lipo将x86_64和arm64架构合并,所以它应该在英特尔和苹果基于硅的机器上运行良好:
clang -undefined dynamic_lookup -o LoopbackDevice_arm64 LoopbackDevice.c -framework CoreServices -framework CoreFoundation -framework CoreMIDI -arch arm64
clang -undefined dynamic_lookup -o LoopbackDevice_x86_64 LoopbackDevice.c -framework CoreServices -framework CoreFoundation -framework CoreMIDI -arch x86_64
lipo LoopbackDevice_x86_64 LoopbackDevice_arm64 -output LoopbackDevice -create在这里,您可以尝试在您的计算机上运行的应用程序存档:LoopbackDevice.zip。(如果您感兴趣,这里有源代码:LoopbackDevice.c)
但是,如果要在目标苹果硅机器上从Xcode的源代码中构建LoopbackDevice并使用上面的命令运行它,那么它可以正常工作:
Creating client...
Creating port 'MIDI A'...
creating source...
creating destination...
OK
Creating port 'MIDI B'...
creating source...
creating destination...
OK
Creating port 'MIDI C'...
creating source...
creating destination...
OK
Waiting for data...那么,我做错了什么,构建通用应用程序?
我还需要注意的是,在基于英特尔的机器上构建通用的dylib是可以的,这种dylibs在苹果硅芯片上运行得很好。所以,也许我需要对应用程序使用不同的步骤(而不是dylibs)。
发布于 2022-08-26 16:28:30
sudo ./LoopbackDevice "MIDI A“"MIDI B”"MIDI C“密码: sudo:./LoopbackDevice:命令未找到
当sudo完成时,您的目录似乎发生了一些变化。我测试了你的代码,它似乎在苹果的硅上工作。尝试提供一条绝对的道路?
% sudo ./LoopbackDevice "MIDI A" "MIDI B" "MIDI C"
Creating client...
Creating port 'MIDI A'...
creating source...
creating destination...
OK
Creating port 'MIDI B'...
creating source...
creating destination...
OK
Creating port 'MIDI C'...
creating source...
creating destination...
OK
Waiting for data...那么,我做错了什么,构建通用应用程序?
只需一步编译就更简单了:
clang -arch arm64 -arch x86_64 -undefined dynamic_lookup -o LoopbackDevice LoopbackDevice.c -framework CoreServices -framework CoreFoundation -framework CoreMIDIhttps://stackoverflow.com/questions/73136428
复制相似问题