ADN Club > Fusion 360 API

LoadLibrary

(1/1)

dr.B00:
Добрый день. Подскажите возможно ли в скриптах на с++ подключение dll?
Пробовал таким образом - не получилось.

--- Код - C++ [Выбрать] ---        HMODULE hDll;         hDll = LoadLibrary(_T("fusion_cmm.dll"));        if (!hDll)        {... 

Александр Ривилис:
dr.B00
Приветствую на форуме!
1. Ознакомься пожалуйста с правилами форматирования кода на форуме и соблюдай их.
2. А если попробовать задать полный путь к файлу?
3. Почему if (!hDll) ? Это ситуация с ошибкой, т.к. в нормальном случае возвращается ненулевое значение.

Александр Ривилис:
Взял первую попавшуюся dll и переименовал её в test.dll. Проверил следующий код. Всё работает.


--- Код - C++ [Выбрать] ---#include <windows.h>#include <Core/CoreAll.h>#include <Fusion/FusionAll.h>#include <CAM/CAMAll.h> using namespace adsk::core;using namespace adsk::fusion;using namespace adsk::cam; Ptr<Application> app;Ptr<UserInterface> ui; extern "C" XI_EXPORT bool run(const char* context){        app = Application::get();         if (!app)                return false;         ui = app->userInterface();        if (!ui)                return false;   HMODULE hdll = LoadLibraryW(L"C:\\test.dll");  if (hdll) {           ui->messageBox("Dll loaded");  } else {           ui->messageBox("Dll not loaded");  }         return true;} extern "C" XI_EXPORT bool stop(const char* context){        if (ui)        {                ui->messageBox("in stop");                ui = nullptr;        }         return true;}  #ifdef XI_WIN #include <windows.h> BOOL APIENTRY DllMain(HMODULE hmodule, DWORD reason, LPVOID reserved){        switch (reason)        {        case DLL_PROCESS_ATTACH:        case DLL_THREAD_ATTACH:        case DLL_THREAD_DETACH:        case DLL_PROCESS_DETACH:                break;        }        return TRUE;} #endif // XI_WIN


dr.B00:
Александр Ривилис,
Большое спасибо. Когда указал полный путь к dll получилось (хотя в Include directories место хранения было прописано).

Александр Ривилис:

--- Цитата: dr.B00 от 24-05-2016, 22:04:39 --- (хотя в Include directories место хранения было прописано)
--- Конец цитаты ---
Для LoadLibrary Include directories не указ. Более того это информация используется на стадии компиляции C++, а не для выполняющегося add-in. Читай описание LoadLibrary: https://msdn.microsoft.com/en-us/library/windows/desktop/ms684175

Навигация

[0] Главная страница сообщений

Перейти к полной версии