she*_*ron 7 c macos gcc shared-libraries
我正在维护一个具有类似插件功能的小应用程序,它通过运行时加载的动态模块实现.
具体来说,因为它是一个Gtk +应用程序,我正在使用gmodule,但问题也适用于基于dlfcn.h/dlopen()的动态库加载.
我的主程序有一个包含一些全局信息的全局结构变量.我希望这些信息可用于动态加载的插件中定义的函数.
在Linux上,我可以直接引用这个全局变量 - 这很好用,我猜测gcc或链接器负责将全局变量从主程序导出到动态库.
问题是,这在Mac OS X上不起作用.有没有办法在OS X上执行此操作?
如果没有,是否有更多的"最佳实践"方法将全局信息公开给动态加载的库?
将全局放在main.c中并在共享对象中将其声明为extern,并尝试:
MACOSX_DEPLOYMENT_TARGET=10.3 ld -dylib -undefined dynamic_lookup -o multiply.so multiply.o
Run Code Online (Sandbox Code Playgroud)
要么
MACOSX_DEPLOYMENT_TARGET=10.3 libtool -dynamic -undefined dynamic_lookup -o multiply.so multiply.o
Run Code Online (Sandbox Code Playgroud)
它适用于Mac OS X 10.4