2010-05-22 35 views
8

Estoy tratando de utilizar el archivo lame_enc.dll de LAME en un proyecto de C#, pero agregar el elemento parece imposible.Agregar DLL de C++ a un proyecto de C#

Sigo recibiendo un error que dice que no se pudo agregar una referencia y que compruebe si se puede acceder a ella, a un ensamblaje válido o a un componente COM.

No tengo experiencia en C++, aunque me gustaría utilizar la funcionalidad. En este momento estoy usando Process del .NET framework para llamar a lame.exe y hacer las cosas, pero me gustaría saber si hay otra manera.

+0

Para añadir a estos otros comentarios , si terminas teniendo que hacer una especie de envoltorio, puede ser útil ir al cerdo entero, y usar un contenedor COM-callable. De esta forma, puede llamarlo, por ejemplo, también en jScript :) Y si busca en la web el contenedor LAME COM, obtendrá una respuesta como esta: http://www.mail-archive.com/[email protected] tuhs.org/msg02219.html –

Respuesta

6

usted tiene que utilizar P/Invoke a llamar a las API de código administrado no administrados.

8

Solo puede agregar conjuntos administrados como referencia a un proyecto administrado. Lo que normalmente hago en esta situación es agregarlo como recurso en lugar de con la configuración "copiar local". De esa forma, el archivo DLL está vinculado e implementado con su proyecto. Luego uso DllImport para obtener manualmente las API que necesito de esa DLL.

3

Deberá usar PInvoke para llamar a funciones en su dll lame nativo. Sin embargo, solo podrá llamar a funciones que se hayan exportado como estilo "C".

Puede utilizar una herramienta como "Asistente PInvoke interoperabilidad" que le ayudará a la hora de trabajar a cabo las firmas de llamadas PInvoke para hacer llamadas desde C# para el archivo DLL nativa:

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

Cuestiones relacionadas