我在Visual Studio 2010中有两个项目。一个是简单的(win32).exe项目,另一个是DLL项目。
在我创建的DLL项目中,只有一个简单的类,其中只有一个方法。我想从我的EXE应用程序访问这个类和方法。但我想访问该类,就好像它是自己的EXE项目的一部分,如:
CTest test = new CTest;
test->TestMethod ( );
有办法做到这一点吗?就像发布DLL的头文件并在EXE项目中的某处添加对DLL的引用一样...... ??
答案 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
。