Сборка open62541 DLL с помощью Visual Studio 2017 - PullRequest
0 голосов
/ 04 марта 2019

Привет, сообщество. Я хотел бы написать пользовательский интерфейс для OPC UA-сервера, используя open62541 lib.Программное обеспечение для ввода должно считывать текстовый файл и приводить данные через сервер к уже доступному клиенту.

Застрял на этапе, когда необходимо скомпилировать dll-файл для дальнейшего использования его в проекте форм Windows.

Есть некоторыеВ информации упоминалось, что Дэви Трипонни скомпилировал ее с Visual C ++ 2013 https://github.com/open62541/open62541/wiki/Using-open62541-from-C%23

Но мне не повезло с VS 2017.

Существует последовательность моего прогресса:

  • Уже загружены 64-битные файлы .h и .c из https://open62541.org/
  • Создан проект библиотеки динамических ссылок (DLL).
  • Вложены файлы .h и .c в проект, выбрано 64Компилятор:

Project

Получение предупреждений о количестве лотов и ошибки при сборке:

Severity    Code    Description Project File    Line    Suppression State
Warning C4005   'CLOSESOCKET': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39113   
Warning C4005   '_Q_INVALIDATE': macro redefinition open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 130 
Warning C4005   'UA_atomic_sync': macro redefinition    open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 813 
Warning C4005   'UA_atomic_sync': macro redefinition    open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 815 
Warning C4005   'CLOSESOCKET': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 35386   
Warning C4005   'errno__': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 35387   
Warning C4005   'CLOSESOCKET': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39088   
Warning C4005   'CLOSESOCKET': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39106   
Warning C4005   'UA_sleep_ms': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39111   
Warning C4005   'UA_sleep_ms': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39127   
Warning C4005   'UA_sleep_ms': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39130   
Warning C4005   'WIN32_INT': macro redefinition open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39135   
Warning C4005   'OPTVAL_TYPE': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39136   
Warning C4005   'ERR_CONNECTION_PROGRESS': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39137   
Warning C4005   'UA_fd_set': macro redefinition open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39167   
Warning C4005   'UA_fd_isset': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39168   
Warning C4005   'errno__': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39176   
Warning C4005   'errno__': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39181   
Warning C4005   'INTERRUPTED': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39182   
Warning C4005   'WOULDBLOCK': macro redefinition    open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39183   
Warning C4005   'AGAIN': macro redefinition open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 39184   
Warning C4005   'ANSI_COLOR_RED': macro redefinition    open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 40158   
Warning C4005   'ANSI_COLOR_GREEN': macro redefinition  open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 40159   
Warning C4005   'ANSI_COLOR_YELLOW': macro redefinition open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 40160   
Warning C4005   'ANSI_COLOR_BLUE': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 40161   
Warning C4005   'ANSI_COLOR_MAGENTA': macro redefinition    open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 40162   
Warning C4005   'ANSI_COLOR_CYAN': macro redefinition   open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 40163   
Warning C4005   'ANSI_COLOR_RESET': macro redefinition  open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 40164   
Warning C4005   'BEGIN_CRITSECT': macro redefinition    open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 40709   
Warning C4005   'END_CRITSECT': macro redefinition  open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 40710   
Error   C1010   unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?    open62541   c:\users\scadaadmin\desktop\open62541-win64\open62541.c 43979   

Вопрос в том, как свойство я могускомпилировать файл open62541 c code dll с Visual Studio 2017, чтобы использовать его в приложении Windows # C # в качестве сервера?

1 Ответ

0 голосов
/ 06 марта 2019

Поскольку проект open62541 был обновлен, я предлагаю вам непосредственно взять текущее состояние источников.Таким образом, вы сможете лучше использовать примеры, которые они предоставляют.Вот руководство по созданию проекта.Может быть, это может быть проще, но я столкнулся с довольно большим количеством проблем, поэтому я дам вам все шаги, которые я сделал.


ПОДГОТОВКА ОКРУЖАЮЩЕЙ СРЕДЫ

  1. Установка cmake (с PATHобновление)

https://cmake.org/download/

Установить последнюю версию python (с обновлением PATH)

https://www.python.org/downloads/

Повторно откройте сеанс, чтобы учесть новые переменные PATH

Установить модуль Python "six"

pip install six

BUILDING MBEDTLS

  1. Скачать исходные коды библиотеки (лицензия apache)

https://tls.mbed.org/download

Запустите cmake в источниках
cmake . -DUSE_SHARED_MBEDTLS_LIBRARY=ON -D CMAKE_BUILD_TYPE=Release

Откройте «mbed TLS.sln» в Visual Studio (я использую Community 2015) и сгенерируйте все в режиме «Release»

Скопируйте следующие файлы

  • библиотеки .lib из «библиотеки \ выпуска» в «путь \ к \ OpcUa_lib»
  • двоичные файлы .dll из «библиотеки \ выпуска» в «путь \ к \ OpcUa_bin»
  • папка "mbedtls" в "include" в "Path \ To \ OpcUa_include"

BUILDING OPEN62541

  1. Клонировать репозиторий open62541 вполучить исходные коды (с помощью рабочего стола или командной строки GitHub)

https://github.com/open62541/open62541

Создать папку "build" в исходниках (например, C: \ Users \ Davy \ Documents \ GitHub \ open62541 \ build)

Открыть терминал впапка "build" и запустите cmake (сначала перейдите \ path \ To ...)

cmake .. -G "Visual Studio 14 2015" -DUA_ENABLE_ENCRYPTION=ON -DUA_ENABLE_AMALGAMATION=ON -DMBEDTLS_INCLUDE_DIRS="Path\To\OpcUa_include" -DMBEDTLS_LIBRARY="Path\To\OpcUa_lib" -DMBEDX509_LIBRARY="Path\To\OpcUa_lib" -DMBEDCRYPTO_LIBRARY="Path\To\OpcUa_lib" -DBUILD_SHARED_LIBS=ON -D CMAKE_BUILD_TYPE=Release -DUA_LOGLEVEL=100

Откройте решение "build \ open62541.sln" в Visual Studio (Community 2015) и добавьте "mbedcrypto.lib", "mbedtls.lib" и "mbedx509.lib" в качестве ресурсов для компоновщика в проекте.«open62541 / lib / open62541»

  • щелкните правой кнопкой мыши «open62541 / lib / open62541», выберите «properties»
  • , перейдите в «Linker» => «General»
  • добавить «Path \ To \ OpcUa_lib» в качестве дополнительного каталога для зависимостей
  • перейти к «Linker» => «Entry»
  • добавить три строки с «mbedcrypto.lib», "mbedtls.lib "и" mbedx509.lib "в" Дополнительные зависимости "

Создать" open62541 / lib / open62541 "в режиме" Release "

Теперь вы можете использовать следующие файлы

  • библиотека "build \ bin \ Release \ open62541.lib"
  • двоичный файл "build \ bin \ Release \ open62541.dll "
  • файл" build \ open62541.h "

ИНТЕГРАЦИЯ В ДРУГОЙ ПРОЕКТ *

Вам нужно будет сослаться на объединенное объединение.h ofopen62541 и добавьте эти зависимости в компоновщик: open62541.lib, mbedcrypto.lib, mbedtls.lib, mbedx509.lib, Ws2_32.lib.Мне также пришлось указать платформу Visual Studio 2013 (v120) в свойствах проекта.

...