C# 调用C++dll出现的问题。

问题描述:

对 PInvoke 函数“winform应用!winform应用.Form1::add”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。

问题解决:添加属性:

allingConvention=CallingConvention.Cdecl

例如

[DllImport(@"c:\Users\zhang\Documents\Visual Studio 2012\Projects\Win32Project1\Release\dll1.dll",CallingConvention=CallingConvention.Cdecl)]
        public static extern int add(Int32 a, Int32 b);

本文来自csdn  博主wjeson

http://blog.csdn.net/wjeson/article/details/8263320

C# 调用C++dll出现的问题。

时间: 2024-11-10 16:48:14

C# 调用C++dll出现的问题。的相关文章

C# 调用win32 DLL报错 System.BadImageFormatException

C# 调用win32 DLL报错  System.BadImageFormatException 项目右键属性->项目设计器->生成->平台->把'默认设置(任何 CPU)'改为x86. 因为'任何 CPU'的程序在64位的机器上就会用运行为64位,而64程序是不能加载32位dll的

JNI java调用动态链接库dll

现在做的项目中就用到了JNI调用c语言实现的访问设备的dll文件,在此之前对JNI是一窍不通哈,只听说过JNA链接dll,但只是一个了解. JNI(Java Native Interface)Java本地接口,主要作用是实现java代码与C C++编写的代码交互. 理论不多说,还是看java链接dll具体操作吧..如下: 以下实例为java中调用connection.dll文件中的 open()方法. 1,java方 1)装载dll文件 有两种方式System.load();和System.lo

C# 调用第三方DLL z

http://blog.163.com/[email protected]/blog/static/104072678201311721326318/ 以下代码为本人在实际项目中编写的调用第三方DLL接口程序的完整代码. public class ExecuteDLL : Form { ...//忽略与调用DLL无关的代码 private IntPtr hModule = IntPtr.Zero; /// <summary> /// 调用HIS系统提供的DLL接口程序查看检查申请单 ///DL

Unity3d 调用 C++ DLL之 DLL回调Unity3d (C++ DLL回调 C#函数)

上篇   Unity3d 调用C++ DLL (Win平台)  介绍了简单的 Unity3d 调用 C++ DLL的方法,但是这样是不够的,这里再讲下通过函数指针让 C++ DLL中回调 Unity3d 的方式. 转自http://blog.csdn.net/huutu 星环游戏 http://www.thisisgame.com.cn 创建DLL 以及在 Unity3d 中调用 DLL 中函数在上篇中介绍了. 首先,在C#中是没有函数指针的,我们使用 Delegate . 转自http://b

C#调用C++ DLL 文件

说来惭愧,都注册一年多了,却没有发表过一篇正式的博文,中间很多学习的过程也没有记录下来.如今到了一个新的环境,也有了学习的机会,一定要把每天的收获记录一下. 要做的东西需要引用C++编写的DLL,刚开始从网上看到觉得挺麻烦的就没有仔细研究,如今看到别人写的文章,感觉也不是多难.下面分享一下: 1.整一个DLL 使用C++创建一个动态库项目,应用程序设置中选择“DLL” 打开CPPDemo.cpp文件,添加如下代码 #include "stdafx.h"extern "C&qu

Atitit.java&#160;jna&#160;调用c++&#160;dll&#160;的总结

Atitit.java jna 调用c++ dll 的总结 1. JNA技术解密1 1.1. JNA工作原理1 2. JNA技术难点 Java—C和操作系统数据类型的对应表1 2.1. 1 2.2. JNA编程过程3 2.2.1. 跨平台.跨语言调用的第一原则:就是尽量使用基本.简单的数据类型,尽量少跨语言.平台传递数据!4 3. 参考4 1. JNA技术解密 1.1. JNA工作原理 JNA是建立在JNI技术基础之上的一个Java类库,它使您可以方便地使用java直接访问动态链接库中的函数.

Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)

文章目录:                   1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Application 有何妙用: 5. MJ0011 关于 Native Application 的文章整理: 6. 互联网上其他关于 Native Application 的文章整理: 7. 小结: 1. 引子: 其实在好久以前就看了 MJ0011 翻译的那个<Native 应用程序详细>系列的文

VC调用matlab dll方式混合编程(c风格--例2)&lt;二&gt;

VC与Matlab混合编程之调用动态链接库dll--<二> 1.是先建立 matlab 的 m 文件. ellipsefit.m 其包含:function [Xc,Yc,A,B,Phi,P]=ellipsefit(x,y) 2.MCC命令编译生成得到h.dll.lib等文件 在matlab命令行中输入: mcc -B csharedlib:ellipsefit ellipsefit.m (此方式为c风格函数) (具体命令含义可参考<精通matlab与C/C++混合程序设计>刘维,第

VC与Matlab混合编程之调用动态链接库dll(C++)——&lt;二&gt;

VC与Matlab混合编程之调用动态链接库dll--<二> 1.是先建立 matlab 的 m 文件. ellipsefit.m 其包含:function [Xc,Yc,A,B,Phi,P]=ellipsefit(x,y) 2.MCC命令编译生成得到h.dll.lib等文件 在matlab命令行中输入: mcc -W cpplib:ellipsefit ellipsefit.m -T link:lib (此方式为c++风格函数) (具体命令含义可参考<精通matlab与C/C++混合程序

绝对好文C#调用C++DLL传递结构体数组的终极解决方案

C#调用C++DLL传递结构体数组的终极解决方案 时间 2013-09-17 18:40:56 CSDN博客相似文章 (0) 原文  http://blog.csdn.net/xxdddail/article/details/11781003 在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了.但是当传递的是结构体.结构体数组或者结构体指针的时候,就会发现C#上没有类型可以对应.这时怎么办,第一反应是C#也定义结构体,然后当