调用自己的dll出现错误
我用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都没问题。
为什么调用自己的出现问题,
谁帮看看