急!连接时出错!!![Linker Error]

daily_flashing 2005-01-13 11:24:07
程序编译通过,在连接时出错:
[Linker Error ]Unresolved external 'ClosesChip' referenced from E:\TEST\UNIT1.OBJ

但奇怪的是在它提供的例子中能够成功连接,而且我在头文件是跟例子里面的是一样的,SchipApi.h, ssKeyApi.h, schiplibb.lib也跟例子一样拷贝到项目的目录下了,例子能成功调用'ClosesChip' 等函数,而我的出现[Linker Error ]!!各位高手帮忙一下!



#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

#include "schipapi.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
hKey = INVALID_HANDLE_VALUE;
UID = 0xffff;
*(int *)szReadPswd = -1;
*(int *)szWritePswd = -1;
}
...全文
116 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Waiting4you 2005-02-20
  • 打赏
  • 举报
回复
那有提供schiplibb.obj吗?
daily_flashing 2005-01-14
  • 打赏
  • 举报
回复
怎么没有高手指点一下啊!
daily_flashing 2005-01-13
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------
void __fastcall TMainForm::DisplayMessage(AnsiString info)
{
static int LineCount = 0;
AnsiString x;

LineCount++;
x.printf("%d: %s", LineCount, info);
Memo1->Lines->Add(x);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CloseChip1Click(TObject *Sender)
{
AnsiString info;
info.printf("Handle 0x%x is to be closed.", hKey);
DisplayMessage(info);
ClosesChip(hKey);
hKey = INVALID_HANDLE_VALUE;
}
daily_flashing 2005-01-13
  • 打赏
  • 举报
回复
他还提供了一个叫sChip.PAS的文件,但是例子中并没有用到也能运行。
至于schiplibb.dll,他们没有提供有,他们提供的例子中也没有!


这是‘安全芯’加密狗一些操作,但我也不知道错误在那里,各位大虾能不能帮忙一起研究一下?

如果分不够的话可以再加!

如果需要他们提供的例子的话可加我 QQ:283851878 或E_Main: sbd7@163.com
Waiting4you 2005-01-13
  • 打赏
  • 举报
回复
也许需要schiplibb.dll
c++专业培训C++程序设计步骤(5步) 在前面已经看到了一些用c++语言编写的程序。但是,写出了程序并不等于问题已经解决了,因为还没有上机运行,没有得到最终的结果。一个程序从编写到最后得到运行结果要经历以下一些步骤。 1、用C++语言编写程序 所谓程序,就是一组计算机系统能识别和执行的指令。每一条指令使计算机执行特定的操作。用高级语言编写的程序称为源程序(source program)。C++的源程序是以 .cpp作为后缀的(cpp是cplusplus的缩写)。 2、对源程序进行编译 从根本上说,计算机只能识别和执行由。和l组成的二进制的指令,而不能识别和执行用高级语言写的指令。为了使计算机能执行高级语言源程序,必须先用一种称为“编译器(complier)”的软件(也称编译程序或编译系统),把源程序翻译成二进制形式的“目标程序(object program)”。 编译是以源程序文件为单位分别编译的,每一个程序单位组成一个源程序文件,如果有多个程序单位,系统就分别把它们编译成多个目标程序。目标程序一般以.obj或.o作为后缀(object的缩写)。编译的作用是对源程序进行词法检查和语法检查。词法检查是检查源程序中的单词拼写是否有错,例如把main错拼为mlan。语法检查是根据源程序的上下文来检查程序的语法是否有错,例如在cout语句中输出变量a的值,但是在前面并没有定义变量a。编译对文件中的全部内容进行检查,编译结束后显示出所有的编译出错信息。一般编译系统给出的出错信息分为两种,一种是错误(error);一种是警告(warning),指一些不影响运行的轻微的错误(如定义了一个变量,却一直没有使用过)。凡是检查出error类的错误,就不生成目标程序,必须改正后重新编译。 3、将目标文件连接 在改正所有的错误并全部通过编译后,得到一个或多个目标文件。此要用系统提供的“连接程序(linker)”将一个程序的所有目标程序和系统的库文件以及系统提供的其他信息连接起来,最终形成一个可执行的二进制文件,它的后缀是.exe,是可以直接执行的。 4、运行程序 运行最终形成的可执行的二进制文件(.exe文件),得到运行结果。 5、分析运行结果 如果运行结果不正确,应检查程序或算法是否有问题。 以上过程如图下所示。其中实线表示操作流程,虚线表示文件的输入输出。例如,编辑后得到一个源程序文件f.cpp,然后在进行编译再将源程序文件f.cpp输入,经过编译得到目标程序文件f.obj,再将目标程序文件f.obj输入内存,与系统提供的库文件等连接,得到可执行文件f.exe,最后把f.exe调入内存并使之运行。

1,222

社区成员

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

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