vs2013 c# 中调用 c 编写的dll出错的可能错误

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

解决办法:     使用   __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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jemter在linux上怎么安装_办公便签软件怎么下载?怎么在电脑桌面上下载安装一款办公便签软件...

走进一间办公室的话,你会看到很多人都在电脑前辛勤地忙碌。确实,随着互联网技术的应用和普及,现在很多上班族都离不开电脑,甚至需要终日在电脑前伏案办公。也正是因为这样,很多人都想在电脑上下载安装一款办公便签软件…

C#布隆过滤器的实现

介绍布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率…

MySQL服务安装

2019独角兽企业重金招聘Python工程师标准>>> 这里是5.7版本以上解压版的安装攻略~~~~~ 1.下载MySQL server https://dev.mysql.com/downloads/mysql/ 根据自己需要下载 2.解压放到指定文件夹。例如: C:\Program Files\MySQL 3.配置环境变量,在path中放入…

ArcGIS实验教程——实验十:矢量数据投影变换

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 一、实验描述 投影变换是指将一种地图投影转换为另一种地图投影,主要包括投影类型、投影参数和椭球体参数等的改变。 二、实验内容 (一)工具箱实现 ArcGIS中,矢量数据的投影变化工具位于:工…

vi 编辑器跳转到指定行数

如:跳转到25行 :set number :23转载于:https://www.cnblogs.com/yihujiu/p/5451948.html

linux之uniq命令

1 uniq命令参数 uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用,可检查文本文件中重复出现的行列 uniq 参数(可以忽略) file 参数如下 -c或--count 在每列旁边显示该行重复出现的次数。 -d或--repeated 仅显示重复出现的行列。 -f<栏位&g…

php基础教程 第八步循环补充

其它循环 上一节内容中&#xff0c;讲解了php中的循环&#xff0c;并且了解了for循环。for循环是php循环中的一种&#xff0c;在本节中继续讲解php循环&#xff1a;While循环、do…while循环、foreach 循环。 While循环 While循环和for循环类似&#xff0c;但是在它的圆括号…

Java记录 -6- 流程控制语句

Java流程控制语句 &#xff08;Flow Control Statement&#xff09;轻量级的文本编辑器&#xff1a;UltraEdit、Editplus、vi、vim、gvim流程控制语句if的用法为&#xff1a;第一种形式&#xff1a;if(布尔表达式){ //待执行的代码}第二种形式&#xff1a;if(布尔表达式…

Microsoft Graph 的 .NET 6 之旅

这是一篇发布在dotnet 团队博客上由微软Graph首席软件工程师 Joao Paiva 写的文章&#xff0c;原文地址&#xff1a;https://devblogs.microsoft.com/dotnet/microsoft-graph-dotnet-6-journey/。Microsoft Graph 是一个 API 网关&#xff0c;它提供了对 Microsoft 365 生态系统…

小鱼便签_同样是写便签,这样更酷

每天那么多的工作&#xff0c;总喜欢写一些Tips提醒自己。但是如果全部都写在小纸条上&#xff0c;贴在电脑边上&#xff0c;每日身边飞扬着无数小纸条&#xff0c;实在是太讨厌啦&#xff01;这时候&#xff0c;不妨试试一款电脑桌面便签软件——小鱼便签&#xff0c;让你的办…

ArcGIS实验教程——实验十一:影像拼接与提取

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 【实验描述】本实验讲述在ArcGIS软件中进行日常影像(栅格)数据的拼接与提取(裁剪)的工具与方法。影像的拼接常用到的工具是Mosaic和Mosaic To New Raster;影像提取分为按属性提取、形状或位置提…

5.03 列出表的索引

show index from emp \G;转载于:https://www.cnblogs.com/liang545621/p/7518762.html

c# task

Task Parallel Library: 1 of n http://www.codeproject.com/Articles/152765/Task-Parallel-Library-of-n Task 与Thread&#xff0c; lambda, action,funct之间有什么关联。 Task相比Thread提供了什么方便之处。 Thread 1. 创建费时间&#xff0c;占用内存与CPU的资源 For …

linux之找出两个文件里面相同的数据

1 问题 找出2个文件里面重复的数据&#xff08;这个问题是csdn排名第一的大神stpeace的专栏在微信里面和我的交流&#xff0c;我当时一脸懵逼&#xff09; 文件a.txt文件内容如下 cat a.txt 123 123 234 345 456文件b.txt文件内容如下 cat b.txt 234 345 456 789 789两个文…

LAMP部署脚本--安装篇

#!/bin/bash # By Stranded 2015-08-20CMA_Vcmake-2.8.6 APA_Vhttpd-2.2.15 MYS_Vmysql-5.5.22 LIB_Vlibmcrypt-2.5.8 MHA_Vmhash-0.9.9.9 MCR_Vmcrypt-2.6.8 PHP_Vphp-5.3.28apache(){# 判断是否有RPM方式安装的httpd、httpd-manual软件包&#xff0c;如果有则卸载if [ $(rpm …

php基础教程 第九步 自定义函数

自定义函数 在之前的课程我们有使用到php的系统函数&#xff0c;这些函数由系统定义。在开发中&#xff0c;有时候系统自带的函数满足不了我们开发时&#xff08;或其它情况&#xff09;&#xff0c;我们可以自定义函数。顾名思义&#xff0c;自定义函数就是自己定义函数。 自…

ArcGIS实验教程——实验十二:栅格数据投影变换

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 一、实验描述 投影变换是指将一种地图投影转换为另一种地图投影,主要包括投影类型、投影参数和椭球体参数等的改变。 二、实验内容 (一)栅格数据投影变换 (二)栅格数据变换 1、平移 2、扭曲…

zdal配置文件_在项目中使用分库分表中间件Zdal详解

如何构建Zdal&#xff0c;这篇文章主要介绍如何在传统的Java Web项目中引入Zdal&#xff0c;来达到分库或者分表的目的&#xff0c;本文是《zdal设计文档》的实战补充。添加zdal-client依赖在Zdal项目中有很多模块&#xff0c;这些模块分别有着不同的功能和角色&#xff0c;在z…

如何使用 C# 隐藏 Console 窗口?

咨询区 Stefan Steiger我有一个 Console 程序&#xff0c;它主要用来重启 IIS 以及删除临时文件&#xff0c;我现在期望它启动后隐藏自身&#xff0c;我在网上找了下面这段代码做了隐藏。static void Main(string[] args) {var currentProcess System.Diagnostics.Process.Get…

Java之new一个对象简单过程

1 问题 new一个对象简单过程 2 过程 1&#xff09;类加载过程(第一次使用该类) 先看这个类有没有加载到内存&#xff0c;没有的话下面操作 &#xff08;1&#xff09;、加载&#xff1a;类加载器&#xff08;双亲委派模式&#xff09;通过全限名读取类的二进制流到jvm内部&am…