首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中使用PInvoke对动态链接库函数进行参数计数

如何在C#中使用PInvoke对动态链接库函数进行参数计数
EN

Stack Overflow用户
提问于 2013-04-04 08:17:56
回答 1查看 84关注 0票数 3

我已经编写了一个C dll,其中包含一个函数,该函数接受4个参数并返回一个数字。然后,我创建了一个C#应用程序并使用PInvoke调用了dll函数。一切都很好。然后,我将dll函数中的参数编号从4改为3。但我没有更改C#中的方法签名(DllImport方法签名)。令我惊讶的是,C#的调用仍然成功,但我从dll函数返回了一些意想不到的值。

我还以为会有个例外,但是电话打过去了。有没有办法在使用P/Invoke进行函数调用时严格执行参数计数?

EN

回答 1

Stack Overflow用户

发布于 2013-04-04 08:19:20

没有办法强制参数计数匹配。你只要把它弄对就行了。对于调用约定、参数类型等也是如此。

与托管代码不同,本机DLL没有描述必须如何调用它们的元数据。

如果您启用了p/invoke堆栈不平衡MDA,那么您至少能够检测到您在运行时犯下的错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15800491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档