有关程序包(package)调用的问题~

Ner0_3 2005-10-14 10:51:15
自己写了个测试包
具体代码如下:
#ifndef MATHS_H
#define MATHS_H
#include "vcl.h"

class PACKAGE Math
{
public:
__fastcall Math();
__fastcall ~Math();
int Add(int x,int y);

};

extern "C" __declspec(package) int Add(int x,int y);

#endif

//.cpp

#include "maths.h"
__fastcall Math::Math()
{

}
__fastcall Math::~Math()
{

}
int Math::Add(int x,int y)
{
x+y;

}

...全文
194 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ner0_3 2005-10-14
  • 打赏
  • 举报
回复
晕3
自己顶一个先
Ner0_3 2005-10-14
  • 打赏
  • 举报
回复
晕 Add函数给错了
int Math::Add(int x,int y)
{
return x+y;

}

然后我在application中的project->options->directories/conditions include path 和library path加入了包的路径,然后把包生成的obj文件拷到application 的obj目录底下.

application 调用的代码如下:
#pragma hdrstop

#include "Unit1.h"
#include "maths.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
int c = Add(4,5);
}

编译是提示:[Linker Error] Unresolved external '_Add' referenced from F:\BCBTEST\CALLBPL\OBJ\UNIT1.OBJ

Ner0_3 2005-10-14
  • 打赏
  • 举报
回复
已解决
谢谢大家
HuangQQ 2005-10-14
  • 打赏
  • 举报
回复
在application的project->packages->add相应的bpi,然后选中build with runtime packages
Ner0_3 2005-10-14
  • 打赏
  • 举报
回复
to:laisf
1.我编译包的时候把bpl,bpi,lib文件都指定到bpk工程的文件夹下面,我再application中,也指定了该路径~!
2.用new一个类,再用类变量去调用也是同样的linkerror!~
3.我在maths.h后面已经+了extern "C" __declspec(package) int Add(int x,int y);

laisf 2005-10-14
  • 打赏
  • 举报
回复
1.确认你包含的路径正确,默认lib在CB安装目录下...\Borland\CBuilder6\Projects\lib

2.你的Add方法在类Math中定义,调用时应该new 一个对象再调用才对。

3.如果包中的方法不是类中定义,在maths.h加上extern PACKAGE int Add(int x,int y);即可
Ner0_3 2005-10-14
  • 打赏
  • 举报
回复
hoo
召唤达人
再顶一个
Ner0_3 2005-10-14
  • 打赏
  • 举报
回复
恩,还是同样的linkerror
rainfall19831109 2005-10-14
  • 打赏
  • 举报
回复
还是一样的错误提示?
Ner0_3 2005-10-14
  • 打赏
  • 举报
回复
too:恩恩
+上调用约束还是不行~
rainfall19831109 2005-10-14
  • 打赏
  • 举报
回复
extern "C" __declspec(package) int Add(int x,int y);
这里你要加上调用约束__stdcall
其实道理和制作dll是一样的

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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