在C#中使用C ++ DLL文件方法

时间:2012-12-21 22:30:14

标签: c#-4.0

我在c ++中创建了一个使用.def文件导出函数的DLL。该函数编写如下:

__declspec(dllexport) int __stdcall MethodA(int par1,int par2,char *par3)
{....} 

然后该方法在.def文件中声明为

MethodA       @1

现在我的问题是如何在我的C#应用​​程序中使用此方法? 我尝试在我的C#应用​​程序中添加dll文件作为参考,我得到以下消息

"A reference to the filename.dll could not be added please make sure that the file is accessible and that the file is a valid assembly or COM component."

修改 阅读完评论后发布的评论。我试图以下列方式使用该文件

 [DllImport("C:\\Filename.dll")]
        public static extern int MethodA(int par1,int par2,String par3);

我正在使用它

 MethodA(1,2,"SomeString);

这是我得到的错误

An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

2 个答案:

答案 0 :(得分:1)

虽然你在C ++方面做了很好的AFAIK,你需要在C#方面做更多的事情,你需要创建一个C#方法声明,如下所示:

[DllImport ("your_dll_name")]
extern int MethodA (int par1, int par2);

根据需要使用staticunsafe等装饰。

答案 1 :(得分:0)

C#与C ++ dll交互的最简单方法是使用COM Interop。您希望在C ++中创建一个COM组件,它封装了C ++ DLL的功能。然后,您可以从C#项目中引用COM组件。