我有一个DLL,导出了一个类:代码如下:
.h中:
#define DLL_INTERNAL __declspec( dllexport )class DLL_INTERNAL Cpp
{
public:
Cpp( const char *sSourceFileName );
void SS( const char *sTargetFileName );
protected:
virtual int HW( int inFile, int outFile ) = 0; char m_sSourceFileName[ MAX_PATH ];
};.cpp中:
Cpp::Cpp( const char *sUnzippedFileName )
{
strcpy( m_sSourceFileName, sUnzippedFileName );
}
void Cpp::SS( const char *sTargetFileName )
{    inFile = open( m_sSourceFileName, _O_BINARY | _O_RDONLY );
    outFile = open( sTargetFileName, _O_BINARY | _O_RDWR | _O_CREAT | _O_EXCL , _S_IREAD | _S_IWRITE  );
    int ret = HW( inFile, outFile ); close( inFile );
close( outFile ); if (ret != 0)
         {
            /*
             error process
            */
          }
}
编译后将生成的lib和dll文件拷到系统目录下;OK! 现在我要新建一个工程调用这个类:
可不知该如何用,代码如下:
.h中:
#define DLL_INTERNAL __declspec( dllimport )
class DLL_INTERNAL Cpp
{
public:
Cpp( const char *sSourceFileName );
void SS( const char *sTargetFileName );
protected:
virtual int HW( int inFile, int outFile ) char m_sSourceFileName[ MAX_PATH ];
};.cpp中:
void main()
{
    Cpp useCpp("e:\\temp\\dmm.dat");
    
    useCpp.SS ("e:\\temp\\dmm");}
编译老通不过,我是个DLL初雪者,请各位大虾指点!!!!!!!!!!!!

解决方案 »

  1.   

    低手说一下。看看MSDN上的一个例子。
      

  2.   

    这就不要高手才能进了吧,你连编译错误都不帖出来
    你干脆说神仙才能进吧
    你应该这样:
    #if defined _AFXDLL
    #define DLL_INTERNAL __declspec( dllexport )
    #else
    #define DLL_INTERNAL __declspec( dllimport )
    #endif
      

  3.   

    gz.
    我先说我的做法把.不是很好.
    就是作个基类,里面不做事情.写在dll里面的类从這兒繼承.然後把基类和.h編譯在project中
    .dll中export一个特殊的函數返回类指針.project中就直接拿那个指針用.
      

  4.   

    FallingAngle(海洲) 的做法很好啊,我觉得是这样的哦。
      

  5.   

    编译错误:
    cannot instantiate abstract class due to following members:
            .h(17) : see declaration of 'Cpp'
      

  6.   

    virtual int HW( int inFile, int outFile ) = 0;
    这是个纯虚函数,所以你的类Cpp是不能有实例,找本c++的
    书看下
      

  7.   

    virtual int HW( int inFile, int outFile )= 0;
    你的这个函数是个纯虚函数,没有实现!你将这个函数的实现过程写出来,重新编译,然后在测试的CPP 编译后带上 生成的lib文件即可
      

  8.   

    Wargod2002(Wargod2002)这位大虾,谢谢!我现在忙得在调程序,没时间看书,你能帮我解决这一问题吗?我一定要用useCpp.SS 这一函数