博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vs2013 c# 中调用 c 编写的dll出错的可能错误
阅读量:5855 次
发布时间:2019-06-19

本文共 497 字,大约阅读时间需要 1 分钟。

先说出错原因:    堆栈调用顺序 

解决办法:     使用   __stdcall 或 使用C#属性 CallingConvention

起因是我想在c#中调用c函数结果出错了

如下

C 头文件

#define DLLExport extern "C" __declspec(dllexport) DLLExport int func(int a, int b); DLLExport void init();

 C#

[DllImport("func.dll")]  public static extern int func(int a, int b);  [DllImport("func.dll")]  public static extern void init();

 

调用时总是发生错误,只有init调用时不会出错,在搜索了很久之后我在C函数上加了一个 __stdcall 描述符,即堆栈调用顺序的改变,

PS:非托管dll使用的是stdcall,详见官方文档

就可以正常调用了

转载于:https://www.cnblogs.com/night-ride-depart/p/4748266.html

你可能感兴趣的文章
IOS Core Animation Advanced Techniques的学习笔记(三)
查看>>
除了模拟手术教学,VR在医疗领域如何应用?
查看>>
HashCode
查看>>
盘点5款Ubuntu监控工具解决CPU暴增问题
查看>>
java 测试IP
查看>>
C#实现ActiveX控件开发与部署
查看>>
用CSS做导航菜单的4个理由
查看>>
NOIP2015 运输计划 二分答案+Tarjan LCA+树上差分
查看>>
构建之法读后感
查看>>
hdu题型分类
查看>>
基本信息项目目标文档
查看>>
DNN Web Platform 官方汉化版本 5.5
查看>>
移动开发Html 5前端性能优化指南
查看>>
UGUI 分页渐变居中效果
查看>>
silverlight style和template 使用之tip
查看>>
Eclipse配置python环境
查看>>
第十二周总结
查看>>
Import declarations are not supported by current JavaScript version--JavaScript版本不支持导入声明...
查看>>
js兼容性大全
查看>>
晶振不起振的原因及其解决方法
查看>>