从 C# 调用外部 C 方法

发布于 2024-11-27 12:40:04 字数 421 浏览 4 评论 0原文

我有一个C 库代码,其中定义了extern 方法:

typedef unsigned int    U32;
extern U32 iw(U32 b, U32 p);

我还有一个Assembler 代码,其中定义了该方法。

如何从 C# 代码调用此 C(甚至可能是 Assembler)方法?
我可以使用 DllImport 属性

I have a C library code, in which extern method is defined:

typedef unsigned int    U32;
extern U32 iw(U32 b, U32 p);

I also have the Assembler code, in which this method is defined.

How can I call this C (or may be even Assembler) method from C# code?
Can I use the DllImport attribute?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浅紫色的梦幻 2024-12-04 12:40:04

请注意,您需要考虑调用约定。大多数 Win32 API 都是为使用 stdcall 编写的,因此 P/Invoke 默认情况下使用 stdcall。然而,VC++ 默认使用CDecl

如果遇到问题,您可以将导出函数修改为 stdcall,也可以修改 P/Invoke 声明(我认为有一个可选的 CallingConvention< DllImport 属性的 /code> 参数)

Just be aware that you need to consider calling conventions. Most Win32 APIs are written to use stdcall, so P/Invoke uses stdcall by the default. However VC++ uses CDecl by default.

If you run into problems you can either modify your exported function to be stdcall, or you can modify your P/Invoke declaration (I think there's an optional CallingConvention argument to the DllImport attribute)

白日梦 2024-12-04 12:40:04

是的,您可以使用类似以下内容来调用 C dll 函数:

[DllImport("your.dll", EntryPoint="iw")]
public static extern UInt32 NiceNameFunc(UInt32 niceNameA, UInt32 niceNameP);

Yes, you can use something like the following to call your C dll function:

[DllImport("your.dll", EntryPoint="iw")]
public static extern UInt32 NiceNameFunc(UInt32 niceNameA, UInt32 niceNameP);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文