zoukankan      html  css  js  c++  java
  • 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*);
  • 相关阅读:
    字符,字符串,字节
    111
    串口通信
    字符编码
    枚举和结构体
    参数数组
    .Net垃圾回收机制
    try{ } catch{ } finally{ }
    LVS 工作原理图文讲解
    自动化运维工具—Ansible常用模块二
  • 原文地址:https://www.cnblogs.com/tekkaman/p/3066226.html
Copyright © 2011-2022 走看看