Вызывание функций в DLL от C++

Вы должны добавить немного стиля. Возможно, есть проблема с версией загрузочного css, которую вы также использовали.

.navbar .container-fluid>.navbar-header {
  float: left;
  margin-right: 10px;
}
.navbar .navbar-nav {
  float: left;
  margin: 5px;
}
.nav>li {
  float: left;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>

<body>
    <nav class = "navbar navbar-default">
        <div class = "container-fluid">
            <div class="navbar-header">
                <a href = "#" class = "navbar-brand">CMS System </a>
            </div>
            <ul class="nav navbar-nav">
                <li><a href="#">Home</a></li>
                <li><a href="#">Home</a></li>
                <li><a href="#">Home</a></li>
                <li><a href="#">Home</a></li>
                <li><a href="#">Home</a></li>
            </ul>
        </div>
    </nav>
</body>

39
задан Sled 30 January 2013 в 15:39
поделиться

5 ответов

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

ПРОТЕСТ: лучшие работ подхода файла определения для неукрашенный имена символа. Если Вы хотите экспортировать украшенные символы затем, это, вероятно, лучше к НЕ, ИСПОЛЬЗУЮТ подход файла определения.

Вот простой пример о том, как это сделано.

Шаг 1: Определяют функцию в файл export.h .

int WINAPI IsolatedFunction(const char *title, const char *test);

Шаг 2: Определяют функцию в файл export.cpp .

#include <windows.h>

int WINAPI IsolatedFunction(const char *title, const char *test)
{
    MessageBox(0, title, test, MB_OK);
    return 1;
}

Шаг 3: Определяют функцию как экспорт в файл export.def defintion.

EXPORTS    IsolatedFunction          @1

Шаг 4: Создают проект DLL и добавляют export.cpp и export.def файлы к этому проекту. Разрабатывание этого проекта создаст export.dll и файл export.lib .

следующие два шага связываются с DLL во время ссылки. Если Вы не хотите определять точки входа во время ссылки, игнорировать следующие два шага и использовать LoadLibrary и GetProcAddress для загрузки функциональной точки входа во времени выполнения.

Шаг 5: Создают Тест проект приложения использовать dll путем добавления файл export.lib к проекту. Скопируйте export.dll файл к тыс того же местоположения как исполняемый файл консоли Test .

Шаг 6: Вызов IsolatedFunction функционируют из Тестового приложения как показано ниже.

#include "stdafx.h"

// get the function prototype of the imported function
#include "../export/export.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    // call the imported function found in the dll
    int result = IsolatedFunction("hello", "world");

    return 0;
}
20
ответ дан jussij 27 November 2019 в 02:50
поделиться

Может также экспортировать функции из dll и импортировать из exe, это более хитро сначала, но в конце намного легче, чем вызов LoadLibrary/GetProcAddress. См. MSDN.

При создании проекта с мастером VS существует флажок в dll, которые позволяют Вам экспортировать функции.

Затем в exe приложении Вы только имеете к #include заголовок от dll с надлежащими определениями и добавляете dll проект как зависимость к exe приложению.

Проверка этот другой вопрос, если Вы хотите исследовать эту точку далее функции Экспорта от DLL с dllexport.

9
ответ дан 4 revs, 3 users 67% 27 November 2019 в 02:50
поделиться

Можно или пойти путем LoadLibrary/GetProcAddress (поскольку Harper, упомянутый в его ответе, вот является ссылкой на динамическое подключение во время выполнения образец MSDN снова), или можно связать консольное приложение с .lib, произведенным из проекта DLL, и включать hea.h файл с объявлением функции (как описано в динамическое подключение времени загрузки образец MSDN )

В обоих случаях, необходимо удостовериться, что DLL экспортирует функцию, которую Вы хотите вызвать правильно. Самый легкий способ сделать это при помощи __ declspec (dllexport) на объявлении функции (как показано в создании простая динамически подключаемая библиотека образец MSDN ), хотя можно сделать это также через соответствующий .def файл в проекте DLL.

Для получения дополнительной информации о теме DLLs, необходимо просмотреть MSDN О Динамически подключаемых библиотеках тема.

6
ответ дан Franci Penov 27 November 2019 в 02:50
поделиться

Предположение Вас говорит о динамической загрузке во время выполнения DLLs, Вы ищете LoadLibrary и GetProAddress. Существует пример на MSDN.

0
ответ дан Harper Shelby 27 November 2019 в 02:50
поделиться

Когда DLL был создан, lib импорта обычно автоматически создается, и необходимо использовать, который связался в с программой наряду с заголовочными файлами для вызова его, но если не затем можно вручную вызвать функции окон как LoadLibrary и GetProcAddress для получения его работа.

0
ответ дан Tim Matthews 27 November 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: