• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Testpartner 如何调用C++ dll

发布: 2008-4-23 18:26 | 作者: 网络转载 | 来源: 网络转载 | 查看: 339次 | 进入软件测试论坛讨论

领测软件测试网 Testpartner 如何调用C++ dll Testpartner是一个非常容易上手的自动化测试工具。它的脚本语言VBA.所以功能上也是非常强大的. 很多人对VB都抱有一定的成见,认为其功能不强,用C++开发才是真材实料.不过这也是仁者见仁,智者见智.我觉得这就像是两种武功一样,vb就像是轻功,c++则是内功,各有所强.轻功的特点就是快,vb开发就是快,传说中bill gates总能用vb解决其他人认为不可能用vb解决的问题。所以,对软件应用的人来说技术的多样性恰似条条大路通罗马,我们就是要从中找出最近的那条. 最近,遇到个测试问题,业务上已经用C++来实现,为了能够在最短的时间内使其能够自动化,必须嵌入到TestPartner.这就涉及到如何在vb中调用C++代码的问题。网上资料还是不少的,所以很快就完成了。其中的一个关键就是将C++的函数调用方式改成__stdcall.在vb中写了个测试程序也通过了。但是相同的代码嵌入到TestPartner,就出现了一个错误,“Bad dll calling convention”. 看了一下帮助,还是围绕着函数调用方式这个问题。 Bad DLL calling convention (Error 49)

   

Arguments passed to a dynamic-link library (DLL) or Macintosh code resource routine must exactly match those expected by the routine. Calling conventions deal with number, type, and order of arguments. This error has the following causes and solutions: Your program is calling a routine in a DLL (in Windows) or a code resource (on the Macintosh) that's being passed the wrong type of arguments.

Make sure all argument types agree with those specified in the declaration of the routine you are calling.

Your program is calling a routine in a DLL (in Windows) or a code resource (on the Macintosh) that's being passed the wrong number of arguments.

Make sure you are passing the same number of arguments indicated in the declaration of the routine you are calling.

Your program is calling a routine in a DLL, but isn't using the StdCall calling convention.

If the DLL routine expects arguments by value, then make sure ByVal is specified for those arguments in the declaration for the routine.

Your Declare statement for a Windows DLL includes CDecl.

The CDecl keyword applies only to the Macintosh.

For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).

 我明明是用了__stdcall,为什么还会有错误呢?再说了,相同的代码在vb中也是可以被正常执行的.难道说Testpartner中的vb为非标准的vb?于是,我就想试一下其他的window api是否能够被正常调用。copy了个sleep的声明 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Declare Function HelloWorld Lib "Test.dll" () 突然发现了一个与自己声明不一致的地方,那就是我用了Function来声明这个没有返回值得函数。在vb中,没有返回值得函数应该用sub. 于是改了一下,错误也就不在了。   看来,Testpartner的vb环境比标准vb IDE在语法上要求更严格!

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: TestPartner Testpartner dll


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网