J'ai reçu une DLL C++ qui doit être intégrée dans un projet C#.Utilisation de la DLL C++ dans le projet C#
Je pense que j'ai trouvé la bonne façon de le faire, mais l'appel de la DLL me donne cette erreur: System.BadImageFormatException: Une tentative a été faite pour charger un programme avec un format incorrect. (Exception de HRESULT: 0x8007000B)
Ceci est la fonction de la dll:
extern long FAR PASCAL convert (LPSTR filename);
Et voici le code que je utilise 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();
}
}
}}
Toutes les idées sur la façon de procéder avec ça?
Merci beaucoup, Frank
Il a déjà. De WinDef.h '#define PASCAL __stdcall' –
Je dois utiliser le dll" tel quel "... aucun changement autorisé – Frank
Il existe différentes déclarations de PASCAL dans différents en-têtes (également dans WinDef.h), mais l'utilisation dierct de' __stdcall' sera toujours interprété de la même manière – Oleg