Closed MaxFalcone closed 2 years ago
Запуск swig
swig -c++ -csharp -namespace ru.shtrih_m.fr_drv_ng.classic_interface -dllimport classic_fr_drv_ng_csharp.dll -o csharp/classic_interface_wrap.cxx classic_interface.i
Содержимое CMakeLists.txt
cmake_minimum_required(VERSION 3.22)
project(classic_fr_drv_ng_csharp)
add_library(classic_fr_drv_ng_csharp SHARED csharp/classic_interface_wrap.cxx)
set_target_properties(classic_fr_drv_ng_csharp PROPERTIES CXX_VISIBILITY_PRESET default)
target_link_libraries(classic_fr_drv_ng_csharp classic_fr_drv_ng)
Через cmake-gui сгенерировал проект.
поправил #include
Я смог скомпилировать проект по этим шагам.
Но полученную библиотеку не могу в итоге использовать, возникает ошибка.
В проект добавили файлы .cs которые swig сделал? Они делают подключение этой обертки к проекту .net. У меня это файлы: BytesVector.cs classic_fr_drv_ng.cs classic_fr_drv_ngPINVOKE.cs classic_interface.cs SWIGTYPE_p_f_r_q_conststdstringvoid.cs SWIGTYPE_p_stdfunctionT_void_fstd__string_const_RF_t.cs
Действительно файлов в проекте не было (казалось бы должен был генератор их туда добавить), но я добавил и перекомпилировал. Не помогло, ошибка та же. Может ещё на библиотеку надо как-то сослаться?
На скрине проект обертки на C++ ему эти файлы бесполезны, а вот они уже ссылаются на результат этого проекта. Эти файлы должны быть в вашем C# проекте.
Я сдался и написал C# обёртку вокруг COM-объекта просто перечислив все вызовы функций.
Здравствуйте, помогите пожалуйста со сборкой примера для C#. Не могли бы вы написать с какими параметрами надо cmake запускать чтобы под Windows собралось?
Я запустил swig
Создал CMakeLists
Сгенерировал проект
Пришлось поменять строчку
#include <classic_interface.h>
на#include "classic_interface.h"
иначе ссылка на заголовок не находилась.Но сбилдить его не могу. Выдаётся 306 ошибок линковки. Наверно я неправильно указываю какой-то параметр. Пробовал собрать и через Visual Studio 2019 и из командной строки.