delphi如何调用c++dll?其中dll导出了类(200分)

  • 主题发起人 主题发起人 pengyg
  • 开始时间 开始时间
P

pengyg

Unregistered / Unconfirmed
GUEST, unregistred user!
dll部分代码如下
----------------------------
#ifndef MORPHO_DEVICE_H
#define MORPHO_DEVICE_H
#ifdef MORPHO_SDK
#define MORPHO_API __declspec(dllexport)
#else
#define MORPHO_API __declspec(dllimport)
#endif
class MORPHO_API C_MORPHO_Device
{
private:
UL m_ul_magicFirst;
public:
#define MORPHO_NB_DATABASE_MAX 1 // maximum database occurences
#define MORPHO_PRODUCT_DESCRIPTOR_MAXLEN 255 // MSO product descriptor maximum length
#define MORPHO_SOFTWARE_DESCRIPTOR_MAXLEN 255 // MSO software descriptor maximum length
#define MORPHO_SENSOR_DESCRIPTOR_MAXLEN 255 // MSO sensor descriptor maximum length
// members
PUC m_puc_ProductDescriptor;
PUC m_puc_SoftwareDescriptor;
PUC m_puc_SensorDescriptor;
// Constructor and destructor
C_MORPHO_Device ();
C_MORPHO_Device(const C_MORPHO_Device&
i_px_MorphoDevice);
~C_MORPHO_Device ();

// Methods
OpenDevice (
I i_i_SerialPortNumber,
I i_i_BaudRate = 115200
);
----------------------------

这样的dll,我如何调用里面的函数OpenDevice?
 
有一个办法,就是稍难了点,加载DLL后,找到相应的入口地址,运行相应的代码段,最好有外挂,破解,黑客的经验[:D]
 
请参考 http://www.delphibbs.com/delphibbs/dispq.asp?lid=3921047
建议再用C++写一个带有纯虚函数的DLL封装原DLL。
 
说实话,你这样的情况,我以前也用过的。但记不清了,我查查我以前的资料,再回复你吧。但记得是比较麻烦的。装载完dll后,获得dll的句柄,此时中的所有的类和函数都已经装载到内存中,然后在这一片内存中查找你的类名,就可以调用里边的函数了。
 
只记得以下几个函数是有用的:
DllGetClassObject
GetClassObject
 
后退
顶部