linux共享库含有类(version script) 抛砖引玉!
这是我的代码 在最后编译有问题
- C/C++ code
#include"stdio.h"void foo_v1(int f) { printf("foo_v1\n");}__asm__(".symver foo_v1,foo@@VERSION_1.1");class Clock{ public:void SetTime(int NewH, int NewM, int NewS);};void Clock::SetTime(int H, int M, int S){ int Hour = H; int Minute = M; int Second = S; printf("%d %d %d", Hour, Minute, Second);}__asm__(".symver SetTime ,SetTime@@VERSION_1.1");- C# code
//这是上边说的1.verVERSION_1.1{ global: foo; Clock::*;};上边两个可以通过下面编译指令
- C/C++ code
gcc -shared -fPIC -o libfoo.so.1.1 -Wl,--soname='libfoo.so.1' -Wl,--version-script=1.ver foo.c
可是在主函数这里编译连接时报错
- C/C++ code
#include <stdio.h>class Clock;void foo(int);int main(){ Clock myClock; foo(100); myclock.SetTime(10, 12, 14); return 0;}- C/C++ code
main.cpp: In function `int main()':main.cpp:6: error: aggregate `Clock myClock' has incomplete type and cannot be defined
望各位高手,帮我修改使之正确
[解决办法]
[解决办法]
[解决办法]