Я пишу библиотеку C++ и теперь разрабатываю API стиля C. Теперь у меня есть куча методов, которые используют одноплодные основной класс, здесь упрощено заявление:Способ использования общего класса между API экспорта стиля C в C++ DLL
extern "C" {
MYDLL_API void getAudioDeviceList();
MYDLL_API void getWindowList();
MYDLL_API uint32_t BeginVideoCapture();
MYDLL_API uint32_t StopVideoCapture();
}
Но до сих пор я решил удалить одиночка, там дилемму. Что является самым элегантным способом использования моего класса через вызовы API? Сейчас я вижу только один способ, с помощью глобальной переменной и инициализации метод, как (где CVideoConverter это C структура обруча под C++ класс):
extern "C" {
CVideoConverter* t = new CVideoConverter();
MYDLL_API void getAudioDeviceList();
MYDLL_API void getWindowList();
MYDLL_API uint32_t BeginVideoCapture();
MYDLL_API uint32_t StopVideoCapture();
}
Или я должен создать некоторые C структуру, которая будет содержать все методы API и указатель на объект CVideoConverter, который сам экспортирует структуру. Жду ваших предложений, спасибо!
Чтобы помочь вам, нам нужно больше информации о связи между вашим класс 'CVideoConverter' и DLL функций. Как вы использовали точку входа 'DllMain()' и сообщения DLL_PROCESS_ATTACH'/'DLL_PROCESS_DETACH'? –