DLL中使用TNMHTTP控件的问题,急!

chinafj 2003-10-20 05:10:26
我编了一个DLL用于使用TNMHTTP控件,编译已通过,但在使用中会出现如下错误:
Access violation at address 003714A7 in module 'PROJECT1.DLL'. Read of address 00000000

我写的DLL如下:
#include <vcl.h>
#include <windows.h>
#include <NMHttp.hpp>
#include <Psock.hpp>

#pragma hdrstop
extern "C" bool __declspec(dllexport) getdata(char *url,char *abc);


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

bool __declspec(dllexport) getdata(char *url,char *abc)
{
// TNMHTTP *NMHTTP1;
// NMHTTP1->Create();
NMHTTP1->Port=80;
NMHTTP1->Get(url);

strcpy(abc, NMHTTP1->Body.c_str());
return true;
}
//---------------------------------------------------------------------------
...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pp616 2003-10-22
  • 打赏
  • 举报
回复
TNMHTTP *NMHTTP1;
你是定义了一个指针。这个指针指向什么地方你并没有定义。
所以你一用到NMHTTP1这个指针就会出现Read of address 00000000因为指针是空的。当然是00000000

你应该使用new 来构造一个TNMHTTP类的实例。然后才可以使用。
在NMHTTP.HPP中这样定义了构造函数
__fastcall virtual TNMHTTP(Classes::TComponent* AOwner);
所以应该这么用
TNMHTTP *NMHTTP1;
NMHTTP1=new TNMHTTP(NULL);
NMHTTP1->Port=80;
NMHTTP1->Get(url);
strcpy(abc, NMHTTP1->Body.c_str());
delete NMHTTP1;
return true;

chinafj 2003-10-22
  • 打赏
  • 举报
回复
thanks pp616,不过我在FORM中使用时没看到他有用NEW
pp616 2003-10-22
  • 打赏
  • 举报
回复
你看工程文件中会有这么句代码
Application->CreateForm(__classid(TForm1), &Form1);
它用RC资源来创建一个Form包括Form里的子控件。
csdnxw 2003-10-20
  • 打赏
  • 举报
回复
嗬嗬,学习

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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