使用dll中的类函数

时间:2012-02-10 23:49:05

标签: c++ dll

我在Visual Studio 2010中有两个项目。一个是简单的(win32).exe项目,另一个是DLL项目。

在我创建的DLL项目中,只有一个简单的类,其中只有一个方法。我想从我的EXE应用程序访问这个类和方法。但我想访问该类,就好像它是自己的EXE项目的一部分,如:

CTest test = new CTest;
test->TestMethod ( );

有办法做到这一点吗?就像发布DLL的头文件并在EXE项目中的某处添加对DLL的引用一样...... ??

2 个答案:

答案 0 :(得分:4)

除了@Luchian Grigore提供的建议外,您还需要在要从DLL加载的类上正确使用_declspec(dllimport)_declspec(dllexport)

在编译DLL时使用dllexport,在编译使用DLL的可执行文件时使用dllimport。

--- CTest.h ---

#ifdef CTEST_EXPORT  // You are compiling the DLL
#define CTEST_DLL_EXPORT _declspec( dllexport )
#else
#define CTEST_DLL_EXPORT _declspec( dllimport )
#endif

class CTEST_DLL_EXPORT CTest
{
public:
    bool TestMethod();
};

--- CTest.cpp ---

#define CTEST_EXPORT 
bool CTest::TestMethod()
{
    return( true ); // Success?
}

--- main.cpp ---

#include <iostream.h>  // Whatever cin/cout are declared in...
#include "CTest.h"

int main()
{
    CTest ct;

    if( ct.TestMethod() )
    {
        cout << "Success" << endl;
    }
    else
    {
        cout << "Failure" << endl;
    }
    return( 0 );
}

答案 1 :(得分:1)

您包含标题并添加到项目生成的.lib的额外包含库,这些库也会生成.dll