Я совершенно новичок в c ++ и пытаюсь создать образец dll и клиент, который вызывает функцию из dll.
Я создал решение с VC ++ и двумя проектами внутри одной библиотеки DLL и одной консоли.
Внутри проекта plugin_dll у меня есть заголовок и файл cpp:
plugin.h
#pragma once
#define EXPORT extern "C" __declspec (dllexport)
EXPORT char const* Greetings();
plugin.cpp
#include "stdafx.h"
#include "plugin.h"
char const * Greetings()
{
return "Hello From Plugin";
}
в проекте консольного приложения у меня
#include "pch.h"
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
HMODULE DllHandler = ::LoadLibrary(L"plugin.dll");
char const* const getGreetings=reinterpret_cast<char const*>(::GetProcAddress(DllHandler, "Greetings"));
cout << getGreetings() << endl; // Here I get the Error
cin.get();
}
в строке cout я получаю ошибку
E0109 expression preceding parentheses of apparent call must have (pointer-to-) function
и ошибку времени компиляции
C2064 term does not evaluate to a function taking 0 arguments
Во-первых,Это правильный подход для создания функции экспорта DLL и вызова ее в клиентском приложении?Это правильный подход к решению проблемы?