Подключение 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)]
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д