关于动态链接库一个奇怪的问题<急,在线等>

gaowen100 2003-09-28 06:46:16

我在DLL源文件中定义一个函数.目的是在调用它的窗体显示这个Panel.
如下:
extern "C" __declspec(dllexport)
void _stdcall ShowF(TForm *Parent);

void _stdcall ShowF(TForm *Parent)
{
TPanel *Panel1= new TPanel(Parent);
Panel1->Align=alTop;
Panel1->Color=clBlue;
Panel1->Parent=Parent;
Panel1->Show();
}
---------------------------------------------------------
调用代码如下:
extern "C" __declspec(dllexport)
void _stdcall ShowF(TForm *Parent);

void __fastcall TForm1::Button2Click(TObject *Sender)
{

ShowF(Form1);
}

在调用这个动态链接库的程序中.加入*.Lib文件,并且已经复制到同一个目录下.
编译时没有错.但运行时显示."can't assig TFont to a TFont "
请高手指点怎么回事啊??
...全文
19 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingcaiyao 2003-09-29
  • 打赏
  • 举报
回复
这里有一个明显的错误:输出函数调用方式是__stdcall而不是_stdcall
gaowen100 2003-09-29
  • 打赏
  • 举报
回复
没错啊!!我就是按照你这样做的啊...编译是通过了.可是一按那BUTTON后又显示"Can't assign a TFont to a TFont "这个错误了!!会不会跟机器有关啊?
还有_stacall 和__stdcall 好象没有区别.在C++builder中都是当成__stdcall 来处理的.
zjqyb 2003-09-29
  • 打赏
  • 举报
回复
我试了一下没有问题
extern "C" __declspec(dllexport) void __stdcall ShowF(TForm *Parent,TPanel * &ret);

void __stdcall ShowF(TForm *Parent,TPanel * &ret)
{
TPanel *Panel1= new TPanel(Parent);
Panel1->Align=alTop;
Panel1->Color=clBlue;
ret=Panel1;
}
/////////
extern "C" __declspec(dllimport) void _stdcall ShowF(TForm *Parent,TPanel * &ret);

void __fastcall TForm1::Button2Click(TObject *Sender)
{
TPanel *ret;
ShowF(Form1,ret);
ret->Parent=this;
}
gaowen100 2003-09-29
  • 打赏
  • 举报
回复
惨啊!我已经照着风清扬大哥说的做了..可是还是出现同样的问题啊!!
动态链接库对是不是对很多C++语法都不支持啊?.......急啊.
chenniwei 2003-09-28
  • 打赏
  • 举报
回复
呵呵,将这段代码从动态库中复制到程序的某个线程中肯定行。
zjqyb 2003-09-28
  • 打赏
  • 举报
回复
在dll中不能Panel1->Parent=Parent
extern "C" __declspec(dllexport)
void _stdcall ShowF(TForm *Parent,TPanel * &ret);

void _stdcall ShowF(TForm *Parent)
{
TPanel *Panel1= new TPanel(Parent);
Panel1->Align=alTop;
Panel1->Color=clBlue;
ret=Panel1;
}

extern "C" __declspec(dllexport)
void _stdcall ShowF(TForm *Parent,TPanel * &ret);

void __fastcall TForm1::Button2Click(TObject *Sender)
{
TPanel *ret;
ShowF(Form1,ret);
ret->Parent=this;
}


gaowen100 2003-09-28
  • 打赏
  • 举报
回复
错误信息是:
"can't assign a TFont to a TFont " 刚才写错了.
我在窗体中直接写这个函数时再调用时则不会有出错信息的.怎么回事啊??

13,825

社区成员

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

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