Obtuve un dll C++ que debe integrarse en un proyecto C#.Usando C++ DLL en el proyecto C#
Creo que encontré la forma correcta de hacerlo, pero llamar al dll me da este error: System.BadImageFormatException: Se intentó cargar un programa con un formato incorrecto. (Excepción de HRESULT: 0x8007000B)
Ésta es la función en la DLL:
extern long FAR PASCAL convert (LPSTR filename);
Y este es el código que estoy usando en C#
namespace Test{
public partial class Form1 : Form
{
[DllImport("convert.dll", SetLastError = true)]
static extern Int32 convert([MarshalAs(UnmanagedType.LPStr)] string filename);
private void button1_Click(object sender, EventArgs e)
{
// generate textfile
string filename = "testfile.txt";
StreamWriter sw = new StreamWriter(filename);
sw.WriteLine("line1");
sw.WriteLine("line2");
sw.Close();
// add checksum
Int32 ret = 0;
try
{
ret = convert(filename);
Console.WriteLine("Result of DLL: {0}", ret.ToString());
}
catch (Exception ex)
{
lbl.Text = ex.ToString();
}
}
}}
Cualquier ideas sobre cómo proceder ¿con este?
Muchas gracias, Frank
Él ya lo tiene. De WinDef.h '#define PASCAL __stdcall' –
Tengo que usar el dll" tal cual "... no se permiten cambios – Frank
Hay diferentes declaraciones de PASCAL en diferentes encabezados (también en WinDef.h), pero el uso dícil de' __stdcall' siempre se interpretará de la misma manera – Oleg