调用自己的dll出现错误

Rojo.Cai 2007-02-05 11:33:12
我用bcb的new/dll wizard
source 类型我选择了c++
use VCL 打勾

dll程序这样的
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#pragma argsused

extern "C" __declspec(dllexport) int __cdecl OpenPort(char port);

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{


return 1;
}
//-----------------------------------------------------------------------
int OpenPort(char port)
{
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
我自己调用dll


#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//-----------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

int __stdcall (*useport)( char port);
HINSTANCE HmyDLL;

TForm1 *Form1;
//-----------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
HmyDLL=LoadLibrary("comdll.dll");
}
//----------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
FreeLibrary(HmyDLL);
}
//-----------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

FARPROC P;
if(HmyDLL!=NULL)
{
P=GetProcAddress(HmyDLL,"OpenPort");
if(P==NULL)
{
ShowMessage("打开OpenPort()函数错误!");
}
else
{
////第六步:强制类型转换,即将所获取的函数地址强制转换为函数
useport=(int __stdcall (__cdecl *)( char port))P;
////第七步:函数调用
useport(1) ;
}
}
else
{
ShowMessage("打开动态链接库文件comdll.dll错误!");
}
}
一编译,,就ShowMessage("打开OpenPort()函数错误!");
断点一下,,
LoadLibrary没问题,,但是P没值


这个调用,windows的dll都没问题。
为什么调用自己的出现问题,
谁帮看看


...全文
204 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rojo.Cai 2007-02-06
  • 打赏
  • 举报
回复
已经解决
kangji 2007-02-06
  • 打赏
  • 举报
回复
楼主说说怎么回事?
cdmar79 2007-02-06
  • 打赏
  • 举报
回复
__cdecl
改成
__stdcall

13,825

社区成员

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

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