Macos 延迟(动态)加载Mac上的框架(或动态库)
我试图在mac上加载一个框架(或动态库),我只知道运行时的路径 Windows解决方案:Macos 延迟(动态)加载Mac上的框架(或动态库),macos,dll,linker,shared-libraries,Macos,Dll,Linker,Shared Libraries,我试图在mac上加载一个框架(或动态库),我只知道运行时的路径 Windows解决方案: 使用/DELAYLOAD链接库 在使用库中的函数之前,将程序中的当前目录更改为dll所在的目录 从这个库中调用一些函数。dll是从当前目录加载的 在mac上,我可以使用弱链接使应用程序在库不可用的情况下启动。但是,只要需要库中的某些函数,我就会得到“image not found”,应用程序就会中止 我如何在运行时告诉Mac dynamic linker在哪里查找库?“dlopen”不起作用,因为它只加
- 使用/DELAYLOAD链接库
- 在使用库中的函数之前,将程序中的当前目录更改为dll所在的目录
- 从这个库中调用一些函数。dll是从当前目录加载的
您还可以查看NSADIMAGE(),它是OSX特定的,但也应该执行您想要的操作。编写一个在运行时发现路径的包装脚本或可执行文件,将路径添加到DYLD_LIBRARY_path,然后调用
execve
,以找到真正的可执行文件 如前所述,dlopen和dlsym不是我想要的,因为我必须重写所有代码。对于C++类来说非常麻烦。另外,rpath不起作用,因为我无法在运行时更改它。我不认识NSADIMAGE。它会将符号正确链接到代码中使用的已加载但延迟链接的符号吗?