• dylib如何导出C++Class


    dylib如何导出C++Class

     1、C++类成员函数必须为virtual。因为virtual函数在编译期会转换成偏移,偏移是可以跨平台的。而非virtual函数,则会直接通过符号去寻找,各个平台编译器对C++函数名符号的改写规则并不一致,可能导致找不到符号的情况。

     2、必须提供工厂函数。因为C++构造析构函数符号被改写后,无法被找到,只有dylib模块内部才能找到。

     3、看一个导出头文件的Demo。

     1 /* File: Person.h */
     2 class Person {
     3     private:
     4         char _person_name[30];
     5     public:
     6         Person();
     7         Person(char* name);
     8         virtual void set_name(char person_name[]);
     9         virtual char* name();
    10 };
    11  
    12 // Constructor functions and function types.
    13 extern "C" Person* NewPerson(void);
    14 typedef Person * Person_creator(void);
    15 extern "C" Person* NewPersonWithName(char name[]);
    16 typedef Person * PersonWithName_creator(char name[]);
    17  
    18 // Destructor function and function type.
    19 extern "C" void DeletePerson(Person* person);
    20 typedef void Person_disposer(Person*);
  • 相关阅读:
    bzoj4734
    51nod1056
    51nod1048
    51nod1248
    51nod1044
    51nod1132
    51nod1146
    51nod1226
    Spring Boot: Jdbc javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
    sqlserver命令创建数据库和表 demo
  • 原文地址:https://www.cnblogs.com/tekkaman/p/3066226.html
Copyright © 2020-2023  润新知