Я пытаюсь импортировать в проект C++ Project Dll в проект C#. Я обнаружил, что многие люди говорят об использовании DllImport. Я пытался использовать это, и вот что я have-Невозможно импортировать dll C++ в проект C# с использованием DllImport
CPP Код:
int __declspec(dllexport) beginCode(double reportId);
C# Код:
[DllImport("C:\\Users\\<my_user_id>\\Desktop\\ctxmix\\Release\\ctxmix.dll",CallingConvention =CallingConvention.Cdecl ,CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern int beginCode(double reportId);
int result = beginCode(reportId);
Но когда я бегу, я получаю исключение - Исключение выбрано: «System.DllNotFoundException»
Должен ли я добавить ссылки на CPP Dll в проект или сделать что-нибудь еще, кроме кода, который у меня есть на вершине?
Редактировать: Я пытаюсь запустить мой .exe, используя VS2015, и получаю это исключение на своей локальной машине. Кроме того, я не вижу свою CPP Dll в разделе Project-> References, где я вижу другие ссылки там.
Нет, это не дубликат, потому что они могут успешно работать на машине, но не могут загрузить их на другой компьютер под управлением Windows 2003. В моем случае я получаю это исключение на своем компьютере, когда запускаю его с помощью VS2015. – Teja
Я бы использовал команду 'dumpbin/exports [your dll here]' (включенную в командную строку visual studio), чтобы увидеть, что на самом деле является именем экспортируемой функции. Скорее всего, компилятор C++ переводит beginCode в другое, поэтому он не может найти функцию. Вы можете исправить это, изменив значение «ExactSpelling» на false. Кроме того, я не думаю, что CallingConvention.Cdecl подходит для C++ DLL, я думаю, вы хотите StdCall. – Cody
Спасибо @Cody. Я использовал Walker Dependency и обнаружил, что он не может получить некоторые связанные зависимости. Я добавил их в папку C: \ Windows \ System32 и добавил это в переменную среды «Путь». Теперь я могу пройти мимо этой ошибки. Спасибо. – Teja