Использование функций класса из dll - PullRequest
2 голосов
/ 11 февраля 2012

У меня есть два проекта в Visual Studio 2010. Один из них - простой (win32) .exe, а другой - проект DLL.

В проекте DLL, который я создал, есть простой класс с одним методом. Я хочу получить доступ к этому классу и методу из моего приложения EXE. Но я хотел бы получить доступ к классу, как если бы он был частью самого проекта EXE, например:

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

Есть ли способ сделать это? Как выпустить заголовочные файлы DLL и добавить ссылку на DLL где-нибудь в проекте EXE или что-то в этом роде ... ??

Ответы [ 2 ]

4 голосов
/ 11 февраля 2012

Наряду с советом, данным @Luchian Grigore, вам нужно правильно использовать _declspec(dllimport) и _declspec(dllexport) в классе, который вы хотите загрузить из DLL.

Использовать dllexport при компиляции DLL и dllimportпри компиляции исполняемого файла, использующего DLL.

--- 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 голос
/ 11 февраля 2012

Вы включаете заголовок и добавляете в дополнительные включаемые библиотеки .lib, созданный проектом, который также генерирует .dll.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...