Подключение dll, написанной на C++ к проекту - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Столкнулся с такой проблемой: не могу подключить написанную на C++ dll-ку к проекту на шарпе. Описание функции (нашел в header файле)
Листинг программы
  1. #pragma once
  2. #ifdef LINGMATLAB_EXPORTS
  3. #define LINGMATLAB_API __declspec(dllexport)
  4. #else
  5. #define LINGMATLAB_API __declspec(dllimport)
  6. #endif
  7. /// Построение метаинформации по тексту и получение словарей и векторов с данными
  8. LINGMATLAB_API bool GetMetainfo(const std::wstring& text,
  9. std::vector<std::wstring>& featuresdict,
  10. std::vector<int>& featuresstat,
  11. std::vector<std::wstring>& normdict,
  12. std::vector<std::vector<int> >& normpos,
  13. std::vector<int>& norminds,
  14. std::vector<std::wstring>& sourcedict,
  15. std::vector<std::vector<int> >& sourcepos,
  16. std::vector<int>& sourceinds,
  17. std::vector<std::vector<int> >& descriptorpos);
Код на шарпе:
Листинг программы
  1. namespace test
  2. {
  3. class Dll
  4. {
  5. [DllImport("LingLibrary.Matlab64.dll")]
  6. public static extern bool GetMetainfo(
  7. [MarshalAs(UnmanagedType.BStr)]string text,
  8. [MarshalAs(UnmanagedType.SafeArray)]out string[] featuredict,
  9. [MarshalAs(UnmanagedType.SafeArray)]out int[] featurestat,
  10. [MarshalAs(UnmanagedType.SafeArray)]out string[] normdict,
  11. [MarshalAs(UnmanagedType.SafeArray)]out int[,] normpos,
  12. [MarshalAs(UnmanagedType.SafeArray)]out int[] norminds,
  13. [MarshalAs(UnmanagedType.SafeArray)]out string[] sourcedict,
  14. [MarshalAs(UnmanagedType.SafeArray)]out int[,] sourcepos,
  15. [MarshalAs(UnmanagedType.SafeArray)]out int[] sourseinds,
  16. [MarshalAs(UnmanagedType.SafeArray)]out int[,] descriptorpos);
  17. }
  18. class Program
  19. {
  20. static void Main(string[] args)
  21. {
  22. string[] featuredict;
  23. int[] featurestat;
  24. string[] normdict;
  25. int[,] normpos;
  26. int[] norminds;
  27. string[] sourcedict;
  28. int[,] sourcepos;
  29. int[] sourseinds;
  30. int[,] descriptorpos;
  31. Dll.GetMetainfo("Предложение из четырёх слов.",
  32. out featuredict,
  33. out featurestat,
  34. out normdict,
  35. out normpos,
  36. out norminds,
  37. out sourcedict,
  38. out sourcepos,
  39. out sourseinds,
  40. out descriptorpos);
  41. }
  42. }
  43. }
Вылазит ошибка: Не удается загрузить DLL "C:\Users\Жека\Documents\Visual Studio 2008\Projects\test\test\bin\Debug\LingLibrary.Matlab64.dll": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E) Хотя dll-ка там точно есть и функция в ней такая есть. Пробовал прописывать полный путь к ней и без полного пути, кидал в system32 и регал, ничего не помогает. Преподаватель сказал, что она точно должна запускаться на шарпе. Исходников у меня нет, но он уверяет, что там всё в порядке и всякие dllexport прописаны. Библиотека по идее реализует некий морфологический анализ текста. Я что-то делаю не так, да?

Решение задачи: «Подключение dll, написанной на C++ к проекту»

textual
Листинг программы
  1. [DllImport(@"LingLibrary.Matlab64.dll", EntryPoint = "GetMetainfo", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы