在C#项目中使用C++ DLL

Fra*_*ank 6 c# c++ dll dllimport

我有一个C++ DLL,它必须集成在一个C#项目中.

我想我找到了正确的方法,但是调用dll会给我这个错误:System.BadImageFormatException:试图加载一个格式不正确的程序.(HRESULT异常:0x8007000B)

这是dll中的函数:

extern long FAR PASCAL convert (LPSTR filename);
Run Code Online (Sandbox Code Playgroud)

这是我在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();
        }
    }
}}
Run Code Online (Sandbox Code Playgroud)

有关如何进行此操作的任何想法?

非常感谢,弗兰克

Ole*_*leg 4

尝试在从 DLL 导出的函数中使用__stdcall(或WINAPI或)。APIENTRY