有一个BCB调用VC的dll的问题,含泪跪求解决

haibiantingtao 2013-08-09 09:04:41
最近我在使用C++builder时遇到了一个问题。我在CSDN上发了这么一个帖子http://bbs.csdn.net/topics/390534054。
我正在做一个采样程序,采集卡是第三方做的,附赠了一个API动态库,可以通过该动态库完成采样,这个dll是在VC下做的。因为当时缺少了一些文件,所以动态调用没成功,所以就发了这么一个帖子。后来我把另外的一些文件添加进去了,动态调用成功了。所以我当时也就结贴了,但是我现在发现我动态调用的不对,虽然一些函数功能实现了,但是有些函数不对(即一些函数是正常的,另一些函数是不正常的),导致无法启动采用。我看网上标准的说法是将dll转为lib文件,静态调用,但是我调用时总是提示各种各样的问题,
这个事比较急,所以恳请提吃宝贵意见,甚至可以跟我联系价格,好商量。我的邮箱haibiantingtao@aliyun.com
我把一些dll放在http://pan.baidu.com/share/link?shareid=822234965&uk=202448420
时间紧,渴望得到大家的指点
...全文
218 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
haibiantingtao 2013-09-12
这个问题算是解决了一半吧,我在XE4下可以正常导入,但是现在运行还是有点问题,不知道出在哪里。我在CB6.0里面就完全不行
回复
nextseconds 2013-08-26
哥们,静态调用应该没问题吧?
回复
1cctv 2013-08-13
http://blog.csdn.net/gcgamer/article/details/7012845 尽管上面的链接没有给问题的解决方案,但它还是给出问题复杂性的根源.
回复
1cctv 2013-08-13
使用起来就简单的多,如下: TopDllEx *topDll=new TopDllEx(); 然后topDll->调用各种类函数就可以了. 如果只是按一般函数那样导出类函数,这个类函数是不能调用的. 因为类的成员函数的第一个参数总是类的实例指针,而这个参数是不出在函数的声明中的. 比如一个类函数成明如下: xxClass::init(int x); 而编译器生的是这样的 push this push x call init 即init(xxClass *this,int x);
回复
1cctv 2013-08-13
简单看了一下,DLL中封装的是一个类. 导出类和导出一般函数是不同的,你从这个角度baidu一下.
回复
胡子D 2013-08-12
转成lib后,再试试
回复
haibiantingtao 2013-08-12
引用 8 楼 kmshowname 的回复:
转成lib后,再试试
转了,试过,还是不行。先转lib,自己写了def,h文件,还是不行
回复
haibiantingtao 2013-08-10
引用 6 楼 cptang 的回复:
如果是端口操作 就直接用winio吧 采集卡第三方提供的sdk的,一般好像都不稳定
在VC下很稳定
回复
cptang 2013-08-10
如果是端口操作 就直接用winio吧 采集卡第三方提供的sdk的,一般好像都不稳定
回复
缘中人 2013-08-10
你的调用示例关键的地方能不能发出来,看看是什么原因
回复
缘中人 2013-08-10
你调用里边的几个函数,调用哪个函数不成功
回复
haibiantingtao 2013-08-10
引用 2 楼 ksrsoft 的回复:
你调用里边的几个函数,调用哪个函数不成功
dll中有部分是C++类成员函数,但是我在我的程序中调用的是剩下的C函数。我现在怀疑它是不是在这些C函数又调用了C++函数?假如我调用的是c函数(他用 extern "C"声明过了)有影响吗?动态调用和dll转lib再静态调用我都试过,编译没有问题,某些函数是可以正常使用的,但是有的就没有正常执行。
回复
haibiantingtao 2013-08-10
引用 1 楼 sololie 的回复:
悲剧,既然这么急了,你直接用vc来不就得了
我不是专门学计算机的,VC我不太熟。而且我还要用到一些BCB写的控件
回复
sololie 2013-08-09
悲剧,既然这么急了,你直接用vc来不就得了
回复
相关推荐
发帖
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2013-08-09 09:04
社区公告
暂无公告