linux共享库带有类(version script) 抛砖引玉

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.ver
VERSION_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


望各位高手,帮我修改使之正确

探讨

这是我的代码 在最后编译有问题
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, in……

探讨

引用:

引用:
这是我的代码 在最后编译有问题
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 Se……

探讨

引用:

引用:

引用:

引用:
这是我的代码 在最后编译有问题
C/C++ code
#include"stdio.h"
void foo_v1(int f) {
printf("foo_v1\n");
}
__asm__(".symver foo_v1,foo@@VERSION_1.1");
……

linux共享库带有类(version script) 抛砖引玉

相关文章:

你感兴趣的文章:

标签云: