Подключение dll, написанной на C++ к проекту - C#
Формулировка задачи:
Здравствуйте! Столкнулся с такой проблемой: не могу подключить написанную на C++ dll-ку к проекту на шарпе.
Описание функции (нашел в header файле)
Код на шарпе:
Вылазит ошибка:
Не удается загрузить DLL "C:\Users\Жека\Documents\Visual Studio 2008\Projects\test\test\bin\Debug\LingLibrary.Matlab64.dll": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)
Хотя dll-ка там точно есть и функция в ней такая есть. Пробовал прописывать полный путь к ней и без полного пути, кидал в system32 и регал, ничего не помогает. Преподаватель сказал, что она точно должна запускаться на шарпе. Исходников у меня нет, но он уверяет, что там всё в порядке и всякие dllexport прописаны.
Библиотека по идее реализует некий морфологический анализ текста.
Я что-то делаю не так, да?
#pragma once #ifdef LINGMATLAB_EXPORTS #define LINGMATLAB_API __declspec(dllexport) #else #define LINGMATLAB_API __declspec(dllimport) #endif /// Построение метаинформации по тексту и получение словарей и векторов с данными LINGMATLAB_API bool GetMetainfo(const std::wstring& text, std::vector<std::wstring>& featuresdict, std::vector<int>& featuresstat, std::vector<std::wstring>& normdict, std::vector<std::vector<int> >& normpos, std::vector<int>& norminds, std::vector<std::wstring>& sourcedict, std::vector<std::vector<int> >& sourcepos, std::vector<int>& sourceinds, std::vector<std::vector<int> >& descriptorpos);
namespace test { class Dll { [DllImport("LingLibrary.Matlab64.dll")] public static extern bool GetMetainfo( [MarshalAs(UnmanagedType.BStr)]string text, [MarshalAs(UnmanagedType.SafeArray)]out string[] featuredict, [MarshalAs(UnmanagedType.SafeArray)]out int[] featurestat, [MarshalAs(UnmanagedType.SafeArray)]out string[] normdict, [MarshalAs(UnmanagedType.SafeArray)]out int[,] normpos, [MarshalAs(UnmanagedType.SafeArray)]out int[] norminds, [MarshalAs(UnmanagedType.SafeArray)]out string[] sourcedict, [MarshalAs(UnmanagedType.SafeArray)]out int[,] sourcepos, [MarshalAs(UnmanagedType.SafeArray)]out int[] sourseinds, [MarshalAs(UnmanagedType.SafeArray)]out int[,] descriptorpos); } class Program { static void Main(string[] args) { string[] featuredict; int[] featurestat; string[] normdict; int[,] normpos; int[] norminds; string[] sourcedict; int[,] sourcepos; int[] sourseinds; int[,] descriptorpos; Dll.GetMetainfo("Предложение из четырёх слов.", out featuredict, out featurestat, out normdict, out normpos, out norminds, out sourcedict, out sourcepos, out sourseinds, out descriptorpos); } } }
Решение задачи: «Подключение dll, написанной на C++ к проекту»
textual
Листинг программы
[DllImport(@"LingLibrary.Matlab64.dll", EntryPoint = "GetMetainfo", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д