0

我有一个在 c++ 中创建的 dll,它使用 .def 文件导出函数。函数编写如下:

__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)
4

2 回答 2

1

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

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

根据需要和需要用 等static装饰。unsafe

于 2012-12-21T22:35:27.797 回答
0

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

于 2012-12-21T22:34:41.327 回答