vc调用BCB的dll 参数传递 报错
可能原因: 调用方式约定不一致。
函数调用约定如下:
1. __cdecl:C 和 C++ 程序的缺省调用规范。
2. __stdcall:标准调用约定(即WINAPI调用约定),也就是pascal调用约定。
如果VC调用时,调用的约定方式和delphi的dll中函数约定方式不一致,就会出问题。
实例:
BCB中有一函数:
extern "C" DLL_API int __stdcall CP_Test(int i);
在VC中需要动态调用LoadLibrary,定义函数指针为:
typedef int (*cp_test)(int i);
...
cp_test pFun1 = (cp_test)GetProcAddress(hDllLib,"CP_Test");
fpFun1(111); //注意!!! 执行到此会报错。
原因:
typedef int (*cp_test)(int i); 函数指针的调用约定和BCB中函数CP_Test不一致。
解决方案:修改VC中函数指针定义,如下:
typedef int (__stdcall *cp_test)(int i);
vc调用BCB的dll 参数传递 报错的更多相关文章
- java调用本地方法的时候报错 could not find the main class:xx.program will exit
如图所示,当在java调用本地方法的时候报错 我的解决办法是把dll文件放到System.out.println(System.getProperty("java.library.path& ...
- ajax 调用 .net core WebAPI,报错 400 (Bad Request) Unexpected character encountered while parsing value
此文由博主前两天的提问及 dudu 的回答整理,地址:https://q.cnblogs.com/list/myquestion 情况说明 基于 .net core 写了一个 Web API,用 po ...
- unity3d MonoDevelop引用外部自定义dll文件报错:are you missing an assembly reference?
在unity3d 编辑器 MonoDevelop 中引用外部自定义dll文件报错:are you missing an assembly reference? 因为unity还停留在.NET Fram ...
- C#调用C/C++ DLL 参数传递和回调函数的总结
原文:C#调用C/C++ DLL 参数传递和回调函数的总结 Int型传入: Dll端: extern "C" __declspec(dllexport) int Add(int a ...
- log4net.dll添加报错
描述: 新建项目Log4Net类库项目,添加log4net.dll,封装Log类对日志进行操作 新建webForm项目添加Log4Net类库生成的dll生成日志,页面报错,未能加载文件或程序集log4 ...
- VC调用易语言DLL
易语言方面: .版本 .子程序 show, , 公开 ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中. ***注意不 ...
- 关于C#调用非托管DLL,报“内存已损坏的”坑,坑,坑
因客户需求,与第三方对接,调用非托管DLL,之前正常对接的程序,却总是报“内存已损坏的异常”,程序进程直接死掉,折腾到这个点(2018-05-11 00:26),终于尘埃落定,直接上程序. 之前的程序 ...
- 踩坑记录--接口调用,传参DataTable报错
问题描述 服务端提供接口,接口参数包含DataTable类型,客户端调用显示请求报错,Postman调用显示Could not get response 解决 原因 接口实现基于wcf,而wcf参数类 ...
- DLL Export 报错
编译报错: error : syntax error at token xxxx 修改非Unicode 系统区域设计即可
随机推荐
- Xcode5下去除Icon高光
1:Images.xcassets中, 选中图片, 查看属性. 在“iOS icon is pre-rendered” 打勾 2:Info.plist中修改 (1):添加 Icon already i ...
- HDU-1395 2^x mod n = 1
http://acm.hdu.edu.cn/showproblem.php?pid=1395 怎样取余是关键.. 2^x mod n = 1 Time Limit: 2000/1000 MS (Jav ...
- 使用VisualStudio进行单元测试之一
使用VisualStudio中的单元测试功能,可以很方便的创建单元测试项目.编写单元测试代码以及执行单元测试.而如何在VisualStudio中使用单元测试功能,就是本文和后面几篇想要说的了. ...
- PHP中 magic_quotes_gpc 和 magic_quotes_runtime 区别及其反斜线转义问题
php中关于反斜线转义: php中数据的魔法引用函数 magic_quotes_gpc 或 magic_quotes_runtime 设置为on时,当数据遇到 单引号' 和 双引号" ...
- 1002: Prime Path
题目链接:http://172.16.200.33/JudgeOnline/problem.php?id=1002 题意:给你两个四位数的素数,求最少经过多少步的变化能够从一个素数变到另一个素数.在变 ...
- Python串口操作纸币器1
公司需要纸币器开发,参考纸币器文档和网上的一篇vb版本,代码如下: # -*- coding:utf-8 -*- # Author: Pete Yim<xpHook@gmail.com> ...
- Bzoj 2346: [Baltic 2011]Lamp dijkstra,堆
2346: [Baltic 2011]Lamp Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 428 Solved: 179[Submit][Sta ...
- Android学习笔记1:Activity与View
推荐一系列优秀的Android开发源码 Activity是Android应用中负责与用户交互的组件. View组件是所有UI控件.容器控件的基类,View组件就是Android应用中用户实实在在看到的 ...
- malloc的实现
在做csapp的malloc实验,一开始是按照书上的隐式链表法,发现得分很低.这种方法确实很挫,需要遍历一遍以找到合适的空闲块.于是我想到<STL源码剖析>中stl的内存池,感觉应该可以用 ...
- pac 文件使用到的javascript函数
下面是可用于FindProxyForURL()函数体中的条件函数: 基于主机名的函数: isPlainHostName() dnsDomainIs() localHostOrDomainIs() is ...