来自 dll 的函数调用 [表观调用括号前的表达式必须具有(指向)函数类型]

function call from dll [expression preceding parentheses of apparent call must have (pointer-to-) function type]

我是 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 导出函数并在客户端应用程序中调用它的正确方法吗?这是解决错误的正确方法吗?

getGreetings 是一个 const char*,不是一个函数,你想要的是使用 reinterpret_cast<const char*(*)()>() 而不是一个函数而不是一个变量。