首先,简单说明下问题情境,一共三个代码文件,一个主执行程序,两个动态库程序,结构与之前写的弱符号,weak symbol一致:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <string> std::string g_name; void init_name_lib1() { g_name = "lib1" ; } const char * get_name_lib1() { return g_name.c_str(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <string> std::string g_name; void init_name_lib2() { g_name = "lib2" ; } const char * get_name_lib2() { return g_name.c_str(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream> void init_name_lib1(); void init_name_lib2(); const char * get_name_lib1(); const char * get_name_lib2(); int main() { init_name_lib1(); init_name_lib2(); std::cout << "name from lib1: " << get_name_lib1() << std::endl; std::cout << "name from lib2: " << get_name_lib2() << std::endl; return EXIT_SUCCESS; } |