L
linxiaovoc
Unregistered / Unconfirmed
GUEST, unregistred user!
我还是用例子来说明:
我用C++写了一个dll(linux下即为so),源码如下:
upper.h:
#include <stdio.h>
class CUpper
{
public:
int m_nValue ;
int printUPPERCASE(char inLine[]);
int printLOWER(char inLine[]);
};
upper.cpp:
#include "upper.h"
int CUpper:: printUPPERCASE(char inLine[])
{
m_nValue = 222 ;
return m_nValue ;
}
int CUpper:rintLOWER(char inLine[])
{
m_nValue += 333 ;
return m_nValue;
}
编译后,产生dll文件
在C++中调用的时候,我可以实现先调printUPPERCASE后,m_nValue值为222,
然后调用printLOWER,m_nValue值为555。
我想这是因为我用C++调用的话,该类的实例只运行一次,这样类的成员变量就可以很好的
保留下来。
现在我想将该dll用于Delphi(Kylix),那么我该如何使用才可以达到上述的效果呢?
如果单纯采用
function printUPPERCASE(bufchar):interger;cdecl;external "/mypath/upper.so"
function printLOWER(bufchar):integer:cdecl;external "/mypath/upper.so"
我就没有办法在调用printUPPERCASE,再调printLOWER,m_nValue的值为555了,因为此时
m_nValue的值为333。
哪位帮帮忙,解决这个问题。
我用C++写了一个dll(linux下即为so),源码如下:
upper.h:
#include <stdio.h>
class CUpper
{
public:
int m_nValue ;
int printUPPERCASE(char inLine[]);
int printLOWER(char inLine[]);
};
upper.cpp:
#include "upper.h"
int CUpper:: printUPPERCASE(char inLine[])
{
m_nValue = 222 ;
return m_nValue ;
}
int CUpper:rintLOWER(char inLine[])
{
m_nValue += 333 ;
return m_nValue;
}
编译后,产生dll文件
在C++中调用的时候,我可以实现先调printUPPERCASE后,m_nValue值为222,
然后调用printLOWER,m_nValue值为555。
我想这是因为我用C++调用的话,该类的实例只运行一次,这样类的成员变量就可以很好的
保留下来。
现在我想将该dll用于Delphi(Kylix),那么我该如何使用才可以达到上述的效果呢?
如果单纯采用
function printUPPERCASE(bufchar):interger;cdecl;external "/mypath/upper.so"
function printLOWER(bufchar):integer:cdecl;external "/mypath/upper.so"
我就没有办法在调用printUPPERCASE,再调printLOWER,m_nValue的值为555了,因为此时
m_nValue的值为333。
哪位帮帮忙,解决这个问题。