在*nix .so库中,是否有一个入口点在系统加载和卸载时由系统调用?
更实际的说明:如果.so是用C++编写的,它包含带有构造函数和析构函数的全局对象,并且它是从没有构造/破坏概念的语言加载的,那么全局对象是否正确构造/破坏了?
从dll加载dll的最佳方法是什么?
我的问题是我无法在process_attach上加载一个dll,我无法从主程序加载dll,因为我不控制主程序源.因此我也不能调用非dllmain函数.
我__attribute__((init_priority(X)))在GCC中使用这样的:
Type1 __attribute__ ((init_priority (101))) name1 = value1;
Type2 __attribute__ ((init_priority (102))) name2 = value2;
Run Code Online (Sandbox Code Playgroud)
在不同的源文件中.我们说file1.cpp和file2.cpp.如果我在同一个库中使用它,它按预期工作,name1在name2之前初始化,但如果我在不同的库中使用它,初始化的顺序不是预期的.我在gcc文档中读到,这应该像我期望的那样在不同的库中工作,以定义初始化的顺序.我使用它的方式有什么问题吗?你有同样的问题吗?
PS:重构不是这个问题的解决方案,因为我必须从Visual Studio移植一个非常大的项目.