c# 4 0-C#调用VC++6.0的dll中问题

问题描述

C#调用VC++6.0的dll中问题
这是vc++中头文件#define GTDLL_API extern ""C"" __declspec(dllimport) short __stdcall
我在C#中引用
[DllImport(""GT400.dll"")]
private extern static short GT_SetPos(int pos);
调用函数
private void SMotion() //S-曲线模式运动函数
{
short rtn;
rtn=GT_PrflS(); error(rtn); // 设置运动模式为S 曲线模式
rtn=GT_SetJerk(0.00000002); error(rtn); //设置最大加加速度为0.00000002
rtn=GT_SetMAcc(0.004); error(rtn); // 设置最大加速度为0.004
rtn=GT_SetVel(4); error(rtn); // 设置目标速度为4
rtn=GT_SetPos(80000); error(rtn); // 设置目标位置为80000
rtn=GT_Update(); error(rtn); // 刷新参数
}
就会出现
对 PInvoke 函数“测试!测试.Form1::GT_Home”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
网上说的CallingConvention=CallingConvention.Cdecl试过,不可用呀!
求助大神。。。。

解决方案

GT_Home的定义在哪里
你给的是GT_SetPos的

解决方案二:
函数调用约定不一致,都要是stdcall

解决方案三:
这段代码,使用的接口应该不至一个吧,其它接口都正确,只有这个错误?
如果是这样,先看看调用的参数等是否正确?如果不正确,不用我说了你也会怎么改;如果正确,则需要查对接口调用声明与定义。

时间: 2024-12-23 03:35:16

c# 4 0-C#调用VC++6.0的dll中问题的相关文章

hadoop2 2 0 eclipse-eclipse调用hadoop2.2.0 问题

问题描述 eclipse调用hadoop2.2.0 问题 我在eclipse里调用虚拟机上面的hadoop2.2.0的集群时,可以访问到hdfs里的文件夹,但是打开不了里面的具体文档,也没办法直接在dfs locations里直接右键上传(上传上去就一个空的文档,文档里面的数据没了,下载也一样,下载一个空的文档,文档的内容没了)这是为啥呢,求解!

struts2 0+dll-java web项目调用 vc++的dll文件

问题描述 java web项目调用 vc++的dll文件 我用java 的jni调用vc++写好的dll动态链接库,使用main方法测试没有问题,但是放在web项目的Action中调用就不执行,在static{ System.put.println("load dll..."); System.loadlobrary("ukeyjni"); system.out.println("end load..."); } 上面的调用前后都能打印,在调用的

opengl-使用vc++6.0如何绘出三维立方体?

问题描述 使用vc++6.0如何绘出三维立方体? 使用vc++6.0如何绘出三维立方体?是不是先要编三维场景的程序? 我是个新手 请高手帮忙指导一下 解决方案 在百度搜索"opengl入门教程(精)",然后可以在百度文库中找到一份90多页的文本.这份教程说的比较好,很适合入门.可以看看,很有启发的. 解决方案二: VC++6.0的使用VC++6.0中使用OpenGLVC++6.0 使用技巧

在VC 6.0下如何调用Delphi开发的进程内COM

源代码包中共有两个zip文件,其中DelphiCallVCCOM.zip为Delphi调用VC的COM组件,VCCallDelphiCOM.zip为VC调用Delphi的COM组件 因为本人的语言水平很差,考大学时150的总分,我考了个60分.外语也是,初中及格过一次,会考及格过一次.其它的时间好像从没有及格过.所以我不写文章,因我一百字的文章给我写,至少要出八九个错别字.哈哈-.真是个马大哈.你别说我还真的姓马.所以下面的文章中有错误之处,请你老人家多多理解.谁叫你看我的文章了的.下面就谈正事

VC++ 6.0如何创建与调用动态链接库

1.静态链接库与动态链接库区别: 静态链接库:lib中的指令被直接包含在最终生成的EXE文件中. 动态链接库:dll不必被包含在最终的EXE中,EXE文件执行时可以动态地引用和卸载DLL文件. 同时,静态链接库中不能再包含其他的动态链接库或静态库,而动态链接库中可以包含其他的动态或静态库. 2.VC++支持的DLL: DLL的编制与具体的编程语言及编译器无关,动态链接库随处可见,VC++支持三种DLL:非MFC动态库.MFC规则DLL和MFC扩展DLL.DLL导出函数(或变量.类)可供应用程序调

vc++-如何VB6.0 调用 MATLAB r2010b 生成的DLL ?

问题描述 如何VB6.0 调用 MATLAB r2010b 生成的DLL ? 如何VB6.0 调用 MATLAB r2010b 生成的DLL ?我已经用VS 2010 的 VC++ 2010编译器 生成了MATLAB r2010b M文件的DLL了,MATLAB 里 的 M文件的内容是function c=Sum2(ab) c=a+b; end 而且在VB 引用中加入了这个DLL,名为Sum2VB代码里面是:Private a As DoublePrivate b As DoublePrivat

c语言-VC 6.0环境如何动态调用我这个dl,往高手指导l

问题描述 VC 6.0环境如何动态调用我这个dl,往高手指导l A.dll头文件导出函数声明如下: 开发环境VC++ 6.0 typedef void *TESTHANDLE; extern "C" __declspec(dllexport) int __stdcall TEST_Init(TESTHANDLE *hHandle); extern "C" __declspec(dllexport) int __stdcall TEST_Exit(TESTHANDLE

VC++6.0如何添加头文件(graphics.h)??

问题描述 VC++6.0如何添加头文件(graphics.h)?? 'graphics.h': No such file or directory Error executing cl.exe. 编译中出现这个问题(本人初学者),网上说要添加头文件,按照网上的教程结果错误更多了,头文件添加不成功,请求大神支援,怎么破??? (详细一点可以么?最好附上截图,万分感谢!) 解决方案 初学者的话,建议你换Borland C++或者Turbo C++ 这是是属于DOS时代Borland搞出来的一个绘图库

使用VC++6.0制作ASP服务器控件简介

c++|服务器|控件 用ASP写网页的程序员,一定对VBSript语句"Set Conn=Server.Object('ADODB.Connection')"非常熟悉.该语句是利用ASP的Server对象创建了一个数据库控件,它提供了一系列的方法和属性,可以帮助我们在ASP中方便的实现数据库的操作.类似的,在Visual InteDev6.0中,我们还可以看到一些ASP的内置组件如"Scripting.FileSystemObject".但是,在有的场合,仅利用这些