紧急求救!有关DLL调用问题!请兄弟们帮帮忙吧!--(可以继续加分!多少分都无所谓)

Sammo 2003-03-08 04:15:09
天敏公司的VC404卡做的DLL文件竟然在BC++和C++Builder下都无法调用,无论是静态调用还是动态调用!都不行!我给搞得头大了!
我也已经使用BCB的IMPLIB.EXE生成sdk4878.dll的sdk4878.lib文件,然后加入到项目文件中,包含了头文件!编译时总是提示类似这样的错误:
[Linker Error] Unresolved external '__stdcall ViInit(void *)' referenced from E:\C++\TEMP\MAIN.OBJ
然后,我试试动态调用,但总是无法成功调用,就好像没有存在该函数名似的!
卡我已经购买了!但无法进行二次开发!怎么办?!?!?但天敏公司声明是可以在BC++下进行开发的!我如何可以实现在BCB5下调用呢?请各位大侠救命啊!拜托了!谢谢!:)
该开发包下载地址在这里:
http://sammo.51.net/files/sdk.rar
...全文
214 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sammo 2003-03-08
  • 打赏
  • 举报
回复
To aningstar(乘风破浪终有时):
extern "C" __declspec(dllimport) void __stdcall EnableRespondDbClk(DWORD dwCard,BOOL bEnable);
extern "C" __declspec(dllimport) DWORD __stdcall GetDevNum(void);
为什么您定义的EnableRespondDbClk函数就可以,但我试了一试定义GetDevNum函数就不行了!请看看!谢谢!:)
Sammo 2003-03-08
  • 打赏
  • 举报
回复
To aningstar(乘风破浪终有时):
真奇怪!我和您一模一样的做了!绝对没有漏半步,但我的就是不行耶!总是提示这句!
请您把您做好的例子发送给我试试看好吗?谢谢!:)
sammochoi@21cn.com
mustang_zr 2003-03-08
  • 打赏
  • 举报
回复
这篇文章我觉得说的挺全面的,不过都是E文

http://www.bcbdev.com/articles/vcdll.htm

希望有帮助
aningstar 2003-03-08
  • 打赏
  • 举报
回复
忘了说一句,要把dll文件和lib文件都和你的项目文件放在同一个目录下!
aningstar 2003-03-08
  • 打赏
  • 举报
回复
对不起,上边的给错了,我在电脑上试了一下,没有问题啊
估计是你忘记导入lib了。


1,你一定要把lib文件导入到你的project中去,方法如下,选择菜单project,选择第一个,就是
add to project,在对话框中下拉选*.lib,将sdk4878.lib加入,然后就可以了

2,下面是我的测试代码,没有问题

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
extern "C" __declspec(dllimport) void __stdcall EnableRespondDbClk(DWORD dwCard,BOOL bEnable);

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD Card=1;
BOOL MyEnable=true;

EnableRespondDbClk(Card,MyEnable);
}
//---------------------------------------------------------------------------
aningstar 2003-03-08
  • 打赏
  • 举报
回复
__stdcall 换成__pascal试一下
Sammo 2003-03-08
  • 打赏
  • 举报
回复
谢谢 kingfish!非常感谢!:)
结贴了!
好久没有用过BCB,现在我又学到了很多东西了!!!Thanks!:)
kingfish 2003-03-08
  • 打赏
  • 举报
回复
如果你用TRect rc;
用:(RECT *)&rc;

或者 RECT rc;
用:&rc;
kingfish 2003-03-08
  • 打赏
  • 举报
回复
自带的

你用法有问题
Sammo 2003-03-08
  • 打赏
  • 举报
回复
Sorry!这个是已经定义的!不用加的!
我想问的是,我怎么可以把一个Form的RECT变成可以在
BOOL WINAPI StartOverlay(DWORD dwCard,HWND hWnd,RECT *rc);

中使用?谢谢!
Sammo 2003-03-08
  • 打赏
  • 举报
回复
把这个加到哪里?
kingfish 2003-03-08
  • 打赏
  • 举报
回复
typedef struct tagRECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
Sammo 2003-03-08
  • 打赏
  • 举报
回复
现在是需要tagRECT*类型耶,而不是RECT,好像BCB里没有tagRECT*类型是吗?
我怎么才可以使用这个函数:
BOOL WINAPI StartOverlay(DWORD dwCard,HWND hWnd,RECT *rc);
为什么VC里的RECT在BCB里变成了tagRECT*了?
kingfish 2003-03-08
  • 打赏
  • 举报
回复

Use extern "C" to prevent function names from being mangled in C++ programs.

低下那个错误好像强制转一下就行了
(RECT)
Sammo 2003-03-08
  • 打赏
  • 举报
回复
To kingfish(八百里秦川@龙城异客):
谢谢兄弟!终于可以了!顺便请问一下,这个错误怎么回事!刚刚解决了一个,怎么又出现另外一个!VC++的DLL在BCB里调用就这么难吗?哎!

[C++ Error] Main.cpp(27): E2034 Cannot convert 'TRect' to 'tagRECT *'
[C++ Error] Main.cpp(27): E2342 Type mismatch in parameter 'rc' (wanted 'tagRECT *', got 'TRect')
Sammo 2003-03-08
  • 打赏
  • 举报
回复
谢谢!谢谢kingfish兄,我试试去!:)
kingfish 2003-03-08
  • 打赏
  • 举报
回复
发给你了,怀疑你其它地方写错了,比如语法错误之类
Sammo 2003-03-08
  • 打赏
  • 举报
回复
extern "C"{ //加
//函数
} //加


这句我加了,但是还是提示这个错误!真奇怪!请您把您的例子发给我试试看好吗?谢谢!:)
sammochoi@21cn.com
Sammo 2003-03-08
  • 打赏
  • 举报
回复
To kingfish(八百里秦川@龙城异客):
怎么办啊?怎么解决呢?调用会这么难吗?还是不行耶!老兄帮忙想想啊!Thanks!:)
kingfish 2003-03-08
  • 打赏
  • 举报
回复
少了一个字,是没出现你说的问题

。在.h

extern "C"{ //加
//函数
} //加
加载更多回复(3)
内容概要:本文围绕基于Basisformer模型的时间序列锂离子电池SOC(State of Charge,荷电状态)预测展开研究,利用PyTorch框架实现深度学习模型的构建与训练。通过将历史充放电数据作为输入,Basisformer能够有效捕捉电池状态的动态变化特征,提升SOC预测精度。文中详细介绍了模型结构设计、数据预处理流程、训练策略及实验结果析,并与传统方法进行对比,验证了该方法在复杂工况下的优越性与鲁棒性。该研究不仅展示了Basisformer在时序建模中的潜力,也为电池管理系统提供了高精度的状态估计解决方案。; 适合人群:具备一定Python编程基础和深度学习理论知识,熟悉PyTorch框架,从事电池管理系统、新能源汽车或智能预测方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于电动汽车、储能系统等领域的电池SOC高精度实时估算;②为电池健康管理(BMS)提供可靠的状态输入;③推动深度学习在时间序列预测中的实际落地,提升现有预测模型的泛化能力与稳定性; 阅读建议:建议读者结合标题为【锂电池SOC估计】【PyTorch】基于Basisformer时间序列锂离子电池SOC预测研究(python代码实现)的资源,重点研读所提供的Python代码,深入理解数据处理方式与模型网络结构的设计思路,尝试调整超参数以观察对预测性能的影响,从而全面掌握Basisformer在时序建模中的优势、适用边界及工程化实现路径。

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧