Я пытаюсь использовать файл lame_enc.dll от ЛАМЕ в проекте C#, но добавляю, что вещь кажется невозможной.
Я продолжаю получать ошибку, которая говорит, что ссылка не могла быть добавлена и проверять если доступного, допустимый блок или COM-компонент.
У меня нет опыта C++, хотя я хотел бы использовать функциональность. Прямо сейчас я использую Process
от платформы.NET для вызова lame.exe и действительно наполняют, но я хотел бы знать, существует ли иначе.
Вы должны использовать P / Invoke для вызова неуправляемых API-интерфейсов из управляемого кода.
Чтобы использовать неуправляемую dll (собственный C ++) в C #, вы должны использовать DllImport, а не добавлять ссылку на проект в Visual Studio (и именно поэтому вы получаете сообщение об ошибке).
Вам нужно будет использовать PInvoke для вызова функций в вашей родной хромой dll. Однако вы сможете вызывать только те функции, которые были экспортированы в стиле «C».
Вы можете использовать такой инструмент, как «PInvoke Interop Assistant», который поможет вам при разработке сигнатур вызовов PInvoke для выполнения вызовов из C # в вашу родную dll:
Вы можете добавлять управляемые сборки только как ссылку на управляемый проект. Обычно в такой ситуации я добавляю сборку как ресурс с настройками "копировать локально". Таким образом DLL привязывается к проекту и развертывается вместе с ним. Затем я использую DllImport, чтобы вручную получить нужные мне API из этой DLL.