2016-10-05 3 views
1

Я создаю DLL, которая будет экспортировать аргументы функции, которые будут использоваться в приложении, которое будет загружать DLL.DLL - Как экспортировать аргументы функции?

На данный момент мой прогресс выглядит следующим образом:

class PlayerAPI { 
public: 
    PlayerAPI() {} 
    void SetPlayerPosition(float x, float y, float z); 
}; 

class WorldAPI { 
public: 
    WorldAPI() {} 
    void Print(std::string message); 
}; 

class API { 
    API() {} 
public: 
    static API & Get() 
    { 
     static API instance; 
     return instance; 
    } 
    PlayerAPI player; 
    WorldAPI world; 
}; 

__declspec(dllexport) void OnModuleLoad(API * api) { 
    api->world.Print("Test module loaded"); 
} 

Как экспортировать вызовы функций, которые будут использоваться в приложении, которое загружает DLL? В основном приложение должно получить api->world.Print("Test module loaded"); в виде ответа от OnModuleLoad, которое приложение будет использовать и выполнять эту команду самостоятельно.

ответ

0

Обычно я делаю макрос для экспорта функций при компиляции библиотеки DLL и импорта всех функций на стороне клиента. В заголовке это выглядит так:

#ifdef DLL_EXPORT 
#define MyApi __declspec(dllexport) 
#elseif 
#define MyApi __declspec(dllimport) 
#endif 

Теперь вы помещаете это в свой заголовок, и все должно работать. Обязательно определите DLL_EXPORT в настройках препроцессора в проекте DLL.

С помощью этого макроса вы можете экспортировать целые классы или даже только отдельные части класса.

На стороне клиента вы должны ссылаться на файл .obj из DLL, и все должно быть в порядке. DLL - это широкая тема, если вы хотите иметь более конкретную информацию по определенной теме, пожалуйста, сообщите нам об этом.

+0

Дело в том, что он должен передавать функции в качестве аргументов, которые будут использоваться в приложении, которое будет использовать DLL. В DLL будет виртуальный API, в приложении будет полный API. –

Смежные вопросы