有没有一种方法可以静态地/针对 .h 文件验证 p/invoke,这样就不会遇到运行时错误,例如“对本机方法的调用使堆栈不平衡”?
最好是一种跨平台的方式,也可以使用 .so 文件。
你可以自己推理出来。如果可以进行准确的静态分析,那么再也没有人需要编写 [DllImport] 声明,分析工具可以自动生成它们。
不存在这样的工具,C 声明太模棱两可了。
您的分析工具无法工作,除非没有额外的标记,如消除指针和数据流的歧义的SAL 注释。例如,Pinvoke Interop Assistant使用它。IDL 中使用的属性起着非常相似的作用,在 COM 中自动生成类型库和代理/存根。