ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   HardExportClass (https://forum.antichat.xyz/showthread.php?t=1318260)

SR_team 22.08.2017 19:00

Кратко: Пидорасит нормальный C++ класс в проксирующие С функции для экспорта.

Подробно: Люди отвечающие за формирование стандарта C++ конченые долбоебы, котороые не осилили стандартизировать взаимодействие библиотек. Из-за чего библиотеки скомпилированные разными компиляторами могут быть не совместимы. Что бы пофиксить этот зашквар прогеры на экспорт хуярят функции через extern "C", что бы действовал стандарт не C++, а C в котором таки есть соглашение о взаимодействии библиотек. Для меня особой болью в жопе было экспортирование классов, и вот, я написал огнетушитель, который создает прокси-функции с extern "C" для классов.

Интересные факты из вашей жизни: Те из вас, кто осилили скачать программу, заметили, что это не цельный кусок говна, а 2 куска говна - библиотека и программа. Так вот, сама программа - просто gui обертка, и в скором времени, если не забью *** на это поделие, я выпущу cli обертку способную работать из терминала. Это позволит в параметрах проекта указать автоматический вызов сего поделия перед каждой компиляцией, что еще больше автоматизирует создание проксирующих функций для ваших классов.

Скачать для Windows: https://dl.prime-hack.net/HardExportClass.zip

Скачать для Linux: https://dl.prime-hack.net/HardExportClass_linux.zip

Результаты работы:

Цитата:

Сообщение от Спойлер


Код:





Код:

#include

//TODO: fuck

class aaa{
public:
    aaa(int a);
    ~aaa();
    void f();
    int get();
private:
    int a;
public:
    float Z(int l){
        return l*72;
    }
};




Цитата:

Сообщение от Спойлер

Export:

Код:





Код:

#ifdef WIN32
    #define EXPORT extern "C" __declspec(dllexport)
#else
    #define EXPORT
#endif
#include "class.h"

EXPORT void* aaaIinit0_aaa( void* paaa, int a ){
    return new aaa(a);
}
EXPORT void aaaIfini1_aaa( void* paaa ){
    delete (aaa*)paaa;
}
EXPORT    void aaaIpublic2_f( void* paaa ){
    return ((aaa*)paaa)->f(  );
}
EXPORT    int aaaIpublic3_get( void* paaa ){
    return ((aaa*)paaa)->get(  );
}
EXPORT    float aaaIpublic4_Z( void* paaa, int l ){
    return ((aaa*)paaa)->Z( l );
}



Import:

Код:





Код:

#ifdef WIN32
    #define IMPORT extern "C" __declspec(dllimport)
#else
    #define IMPORT
#endif

IMPORT void* aaaIinit0_aaa( void* paaa, int a );
IMPORT void aaaIfini1_aaa( void* paaa );
IMPORT    void aaaIpublic2_f( void* paaa );
IMPORT    int aaaIpublic3_get( void* paaa );
IMPORT    float aaaIpublic4_Z( void* paaa, int l );

class aaa {
    void* _this = nullptr;
public:
    aaa(int a){
        _this = aaaIinit0_aaa( paaa, a );
    }
    ~aaa(){
        aaaIfini1_aaa( paaa );
        _this = nullptr;
    }
    void f(  ){
        return aaaIpublic2_f( paaa );
    }
    int get(  ){
        return aaaIpublic3_get( paaa );
    }
private:
public:
    float Z( int l ){
        return aaaIpublic4_Z( paaa, l );
    }
};





sаnеk 22.08.2017 19:03

с pawn дружит?

SR_team 22.08.2017 19:07

Цитата:

Сообщение от sanek a.k.a Maks_Fender

с pawn дружит?

при чем тут pawn?

sаnеk 23.08.2017 03:30

Цитата:

Сообщение от SR_team

при чем тут pawn?

ну типа павн близок к с++ и довольно часто можно встретить моды, в которых кривая табуляция

MISTER_GONWIK 23.08.2017 09:06

Цитата:

Сообщение от sanek a.k.a Maks_Fender

ну типа павн близок к с++ и довольно часто можно встретить моды, в которых кривая табуляция

павн близок к С

Ubiyca100 23.08.2017 11:53

Опять какую то ***ню изобрел.

sаnеk 23.08.2017 11:56

Цитата:

Сообщение от Ubiyca100

Опять какую то ***ню изобрел.

нормальная ***ня


Время: 08:21