首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > PB调用VC编写的动态链接库
【标  题】:PB调用VC编写的动态链接库
【关键字】:PB,VC
【来  源】:http://blog.csdn.net/olony/archive/2006/06/01/768344.aspx

PB调用VC编写的动态链接库

问题:在pb调用vc编写的动态链接库的时候,报"specified argument type differs from required argument type at runtime in DLL function myFunctionVC4(invalid stack pointer on return from function call) at line 3 in clicked event of object cb_1 of w_main"

(1) DLL中myFunctionVC4函数声明如下:
extern "C" __declspec(dllexport)  long  MyFunctionVC4(long xx){
 //AFX_MANAGE_STATE(AfxGetStaticModuleState());
 return xx;
}

(2)调用过程 long ll = MyFunction(10);

为什么我调用的时候,说提示无法访问被呼叫函数的堆栈哪?经过查阅资料,发现问题解答如下:

(1)VC中函数需要前加 __stdcall 参数声明
(2)要在.def文件中定义函数的导出顺序
     ; MyVCDLL.def : Declares the module parameters for the DLL.

     LIBRARY      "MyVCDLL"
     DESCRIPTION  'MyVCDLL Windows Dynamic Link Library'

     EXPORTS
          ; Explicit exports can go here
          ;MyVC3 = _MyVC3@4  

          ;这里的@4是指的MyVC3参数的总Byte数,注意你可以改名,例如MyVC4 = _MyVC3@4真正在外部调用时为MyVC4(int)名
          MyFunctionVC4 @1  ;这里的@1表示,这个函数被导出的顺序

你可以用以上两种方式的任意一种导出函数

More Effective C++之9:【上一篇】
引用计数错在哪里?:【下一篇】
【相关文章】
  • vc动态数组
  • 利用VC 2005 Express 编写动态库
  • VC学习小技巧一: 说明使用一个非模态对话框应注意问题
  • vc 使用总结
  • VC通过Automation操纵Lotus NotesUIWorkspace
  • 交你一招-光盘损伤不要紧迅雷帮你修复VCD光盘
  • 一个 BMP转ppm/pgm/pbm的程序(bin+source)
  • vc.dll
  • Spring框架学习二篇外----在WEBMVC学习遇到的问题
  • 体验Struts(5)---从分页体会MVC
  • 【随机文章】
  • 百度就知道吹
  • VC++通过汇编获取代码运行时间
  • JBoss Seam 手册
  • 猴子吃桃&打印星形图案
  • HTML 语言教程
  • 关于java中final方法,类,成员变量的讨论
  • Shell基本问题集
  • Using the XML HTTP Request object
  • 用C#生成Excel文件的方法和Excel.dll组件生成的方法
  • grep常见用法
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.