Как внутри C++ DLL подключать другую DLL или обрабатывать ошибку без закрытия программы
У меня есть программа состоящая из C# WinForms и C++ DLL. И winForms вызывают методы из Dll.
Внутри моей DLL для одной из функций подключается заголовок chai.h для которого нужен chai.lib они оба включенны в проект. И так же еще нужна chai.dll которая устанавливается отдельно сайт chai.dll.
Проблема в том что у конечного пользователя не всегда может быть установленна chai.dll и мне бы хотелось узнать как при отсутствии этой длл просто отключать часть функций, потому что сейчас у меня в c# вылетает ошибка DllNotFoundException при вызове любого метода из моей dll если даже он не использует chai. Если я закоментирую импорт chai.h и всех функцих все работает прекрасно.
Пропробую привести приемер кода. C#:
[DllImport("MyDLL.dll", SetLastError = true,
CharSet = CharSet.Ansi, ExactSpelling = true,
CallingConvention = CallingConvention.StdCall)]
public static extern void DoSomeStaff();
int Main() {
DoSomeStaff(); // --> DllNotFoundException MyDll.dll not found
}
C++ dll
#include "chai.h"
__declspec(dllexport) void _stdcall DoSomeStaff()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
...
}
// Функция не вызывается, но ошибка есть, если я ее закоментирую все заработает
__declspec(dllexport) void _stdcall UsingChaiDLL()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CiInit();
...
}
Я даже могу не комментировать #include а просто все функции использующие методы из него ибо даже если они не вызываются есть ошибка