Нужна помощь (Builder+VisualC++)
От: anton_private  
Дата: 13.06.02 09:19
Оценка:
Есть DLL , написанная на VC++, есть LIB а также есть хэдер (H)
Хэдер

#ifndef __METRLIB_H
#define __METRLIB_H

#ifdef WIN32
#define __dllimport __declspec (dllimport)
#define __dllexport __declspec (dllexport)
#else
#define __dllimport
#define __dllexport
#endif


class MChannel {
protected:
MChannel() {}
virtual ~MChannel() {}
public:
virtual int ChannelExist()=0;
virtual char *GetName(char *buf, int maxLen) = 0;
};

struct RegistratorsPresent {
char mask[16];
int IsPresent(int p) { return (mask[p>>3]&(1<<(p&7)))!=0; }
void Clear() { for(int i=0;i<16;i++) mask[i]=0; }
};


enum ChannelType {
ML_ANY,
ML_ANALOG,
ML_DISCRETE,
ML_POWER,
ML_ENERGY,
ML_COUNTER
};

const
ML_EPP_IDX = 0,
ML_EPM_IDX = 1,
ML_EQP_IDX = 2,
ML_EQM_IDX = 3;
struct ChannelPosition {
void *data;
ChannelType ct;
ChannelPosition(ChannelType t) { data=0; ct=t; }
};

class CMAccess {
public:
virtual ~CMAccess() {}
virtual MChannel* GetChannel(const char *name, int typ=ML_ANY)=0;
virtual MChannel* GetChannel(int reg, int cnl, int typ=ML_ANY)=0;
virtual MChannel* GetAnalogChannel(int reg,int chan)=0;
virtual MChannel* GetDiscreteChannel(int reg,int chan)=0;
virtual MChannel* GetPowerChannel(int reg,int chan)=0;
virtual void CloseChannel(MChannel*a)=0;
virtual int LoadNextRecord()=0;
virtual double GetFreq()=0;
virtual void GetRegPresent(RegistratorsPresent &rp)=0;
virtual double GetTime()=0;
virtual double GetChannelAmpl(MChannel*, int idx=0)=0;
virtual double GetChannelPhase(MChannel*)=0;
virtual int GetChannelCorrectFlag(MChannel*)=0;

virtual int Version() = 0;
virtual int IsLoaded()=0;
virtual int GetNextChannelName(ChannelPosition &pos,char *name,unsigned int maxlen)=0;
virtual int GetLimits(MChannel *a, double &min, double &max) = 0;
virtual int ChangeObject(int adr, int num, int cmd) = 0;
};

__dllexport CMAccess* ConnectToMetrServer(const char *host);

#endif

Нужно в Builder'е выполнить что то типа
CMAccess *m=ConnectToMetrServer(a[1]);
Однако ж линкер ругается на CMAccess

Вопрос
1.Как правильно подключить библиотеку?
2.Как правильно вазвать ConnectToMetrServer?

Спасибо всем отКЛИКнувшимся!!!
Подключение dll, созданной в VC++
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 13.06.02 09:45
Оценка: 3 (1)
#Имя: FAQ.tools.cbuilder.vcdll
AP>Есть DLL , написанная на VC++, есть LIB а также есть хэдер (H)

AP>Вопрос

AP>1.Как правильно подключить библиотеку?

сначала ее надо создать ( lib от VC не подойдет):

implib -a my.lib my.DLL

AP>2.Как правильно вызвать ConnectToMetrServer?


наверно не получится, из-за классов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.