- 论坛徽章:
- 0
|
10可用积分
//sharelib.cpp
#include <stdio.h>
class class1
{
public:
int mem1;
class1(int iin1)
{ mem1 = iin1; };
};
int g_int(5);
class1 g_class1(12);
void printclass()
{
printf("g_class1.mem1 = %d \n", g_class1.mem1);
printf("g_int = %d \n", g_int);
}
//main.cpp
#include <stdio.h>
extern void printclass();
int main(int argc, char** argv)
{
printclass();
return 0;
}
都是采用动态库
编译方式1:
c++ -shared -omylib.so sharelib.cpp
c++ -c main.cpp
c++ -omain1 -L. ./mylib.so main.o
./main1
输出为
g_class1.mem1 = 12
g_int = 5
编译方式2:
c++ -c sharelib.cpp
ld -omylib.so -shared sharelib.o
c++ -c main.cpp
c++ -omain1 -L. ./mylib.so main.o
./main1输出为
g_class1.mem1 = 0
g_int = 5
仅仅一个编译不同,结果造成一个全局的类变量没有初始化,为什么? |
最佳答案
查看完整内容
ld -omylib.so -shared sharelib.o改为c++ -omylib.so -shared sharelib.o
|