我在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)
答案 0 :(得分:1)
虽然你在C ++方面做了很好的AFAIK,你需要在C#方面做更多的事情,你需要创建一个C#方法声明,如下所示:
[DllImport ("your_dll_name")]
extern int MethodA (int par1, int par2);
根据需要使用static
,unsafe
等装饰。
答案 1 :(得分:0)
C#与C ++ dll交互的最简单方法是使用COM Interop。您希望在C ++中创建一个COM组件,它封装了C ++ DLL的功能。然后,您可以从C#项目中引用COM组件。