关于vc如何动态调用CB编写的Dll问题

tonyzhao 2003-08-25 03:46:43
我用CB编写了一个DLL,其中声名了一个带参数的函数,功能使创建一个Form并将输入的参数显示在Form的文本框中。我在CB中动态调用此DLL没有任何错误,但在VC中调用时,弹出Form并显示参数均正常,但在关闭Form时VC提示DEBUG错误!不知道什么原因?
CB代码如下:
#include "frm.h"

extern "C" void __declspec(dllexport) _stdcall ShowWin(char str1[10],char str2[10],char str3[10]);

void _stdcall ShowWin(char str1[10],char str2[10],char str3[10])
{
Form1 = new TForm1(NULL)
Form1->Edit1->Text = str1;
Form1->Edit2->Text = str2;
Form1->Edit3->Text = str3;
Form1->ShowModal();
delete Form1;
}

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}

VC代码如下:
void CTestDlg::OnOK()
{
// TODO: Add extra validation here
CDialog::OnOK();

void (*ShowWin)(char str1[10],char str2[10],char str3[10]);
HINSTANCE hInst;
char str1[10],str2[10],str3[10];

strcpy(str1,"k189");
strcpy(str2,"11:40");
strcpy(str3,"3");
hInst = LoadLibrary("DLL.DLL");
(FARPROC &)ShowWin = GetProcAddress(hInst,"ShowWin");
ShowWin(str1,str2,str3);
FreeLibrary(hInst);


}
...全文
83 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjqyb 2003-08-26
  • 打赏
  • 举报
回复
typedef void ( WINAPI *fp)(char str1[10],char str2[10],char str3[10]);
HINSTANCE hInst;
char str1[10],str2[10],str3[10];

strcpy(str1,"k189");
strcpy(str2,"11:40");
strcpy(str3,"3");
hInst = LoadLibrary("DLL.DLL");
ShowWin = (fp)GetProcAddress(hInst,"ShowWin");
ShowWin(str1,str2,str3);
FreeLibrary(hInst);
zjqyb 2003-08-26
  • 打赏
  • 举报
回复
cb中你没有静态编译吧
zjqyb 2003-08-26
  • 打赏
  • 举报
回复
extern "C" void __declspec(dllexport) ShowWin(char str1[10],char str2[10],char str3[10]);
(vc中不能有__stdcall,和cb是反的)
Behard 2003-08-26
  • 打赏
  • 举报
回复
应该是两个编译器的默认调用 Dll 方式不一样引起的错误
在 VC 中改为
void (__stdcall *ShowWin)(char str1[10],char str2[10],char str3[10]);
即可

1,221

社区成员

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

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