#include <cstring.h>
#include <vcl.h>
#include "Base10.h"
#pragma hdrstop
typedef IUnknown*__stdcall (*LPCreateInst) (void);
extern "C" __declspec (dllimport) IUnknown* __stdcall CreateInst (void);
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
string name;
int number;
char szText[100];
HINSTANCE hinst;
LPCreateInst lpci;
hinst=LoadLibrary("D:\\HOME\\10\\Debug_Build\\Server10.dll");
lpci = (LPCreateInst) GetProcAddress(hinst, "CreateInst");
IUnknown* pIUnknown=lpci();
ICar* pICar=NULL;
pIUnknown->QueryInterface(IID_ICar,(void**)&pICar);
pICar->Set(string("А"),1); // тут ошибка
pICar->Get(name,number);
wsprintf (szText,"Название: %s\nНомер: %d",name.c_str(),number);
MessageBox (NULL,szText,"Текст",MB_OK);
return 0;
}
Base10.h
#include <objbase.h>
#include <initguid.h>
#include <cstring.h>
DEFINE_GUID(IID_ICar,0×00021141,0,0,0xC0,0,0,0,0,0,0,0×46);
interface ICar :public IUnknown{
public:
virtual void __stdcall Get(string&, int&)=0;
virtual void __stdcall Set(string, int)=0;
};
9 ноября 2008 в 22:04
да лан=) потом посмотрю, главное что прога периодически работает=) я думаю этого хватит чтоб сдать ее на лабе=)
9 ноября 2008 в 22:02
'Access Violation' означает, что программа обратилась по недопустимому адресу:
ICar* pICar=NULL;
pIUnknown->QueryInterface(IID_ICar,(void**)&pICar);
pICar->Set(string("А"),1); // тут ошибка
QueryInterface не возвращает нужного адреса. Посмотри значение, возвращаемое этим методом.
9 ноября 2008 в 22:00
это конечно странно…но прога заработала…я хз почему…я просто еще раз откомпилила сервер.срр
9 ноября 2008 в 22:00
блиииииин…вот че она поработает а потом опять тупииииит=(((
9 ноября 2008 в 21:05
Посмотри код ошибки, который возвращает QueryInterface. Там не E_NOINTERFACE случайно?
9 ноября 2008 в 21:05
там
[C++ Warning] Dialogs.hpp(581): W8058 Cannot create pre-compiled header: initialized data in header
в Server10.cpp
а так как клиент работает с сервером то может поэтому и ошибка?
9 ноября 2008 в 20:04
не пойму в чем тут дело…