Добавление C++ DLL к проекту C#

Я пытаюсь использовать файл lame_enc.dll от ЛАМЕ в проекте C#, но добавляю, что вещь кажется невозможной.

Я продолжаю получать ошибку, которая говорит, что ссылка не могла быть добавлена и проверять если доступного, допустимый блок или COM-компонент.

У меня нет опыта C++, хотя я хотел бы использовать функциональность. Прямо сейчас я использую Process от платформы.NET для вызова lame.exe и действительно наполняют, но я хотел бы знать, существует ли иначе.

11
задан KdgDev 22 May 2010 в 19:02
поделиться

4 ответа

Вы должны использовать P / Invoke для вызова неуправляемых API-интерфейсов из управляемого кода.

6
ответ дан 3 December 2019 в 04:51
поделиться

Чтобы использовать неуправляемую dll (собственный C ++) в C #, вы должны использовать DllImport, а не добавлять ссылку на проект в Visual Studio (и именно поэтому вы получаете сообщение об ошибке).

Вот документация по DllImport из MSDN.

4
ответ дан 3 December 2019 в 04:51
поделиться

Вам нужно будет использовать PInvoke для вызова функций в вашей родной хромой dll. Однако вы сможете вызывать только те функции, которые были экспортированы в стиле «C».

Вы можете использовать такой инструмент, как «PInvoke Interop Assistant», который поможет вам при разработке сигнатур вызовов PInvoke для выполнения вызовов из C # в вашу родную dll:

http://clrinterop.codeplex.com/releases/ view / 14120

3
ответ дан 3 December 2019 в 04:51
поделиться

Вы можете добавлять управляемые сборки только как ссылку на управляемый проект. Обычно в такой ситуации я добавляю сборку как ресурс с настройками "копировать локально". Таким образом DLL привязывается к проекту и развертывается вместе с ним. Затем я использую DllImport, чтобы вручную получить нужные мне API из этой DLL.

10
ответ дан 3 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: