C++ 将另一个项目的头文件包含到DLL项目中

C++ 将另一个项目的头文件包含到DLL项目中,c++,dll,C++,Dll,我创建了一个使用DLL文件并调用其内部函数的测试应用程序 我遵循了链接中给出的步骤: 我有Win32控制台应用程序和DLL创建者应用程序。理想情况下,Win32应用程序LoadLibrary()和GetsProcAddress()会在DLL中获取特定函数的函数指针,并传递参数,返回结果,所有操作都正常 现在,我需要做的是,从控制台应用程序中,我需要调用DLL中的函数,在DLL函数中,我需要调用Win32控制台应用程序中的函数,以获取值,而不是作为参数传递 像这样的, 1) 将Win32 con

我创建了一个使用DLL文件并调用其内部函数的测试应用程序

我遵循了链接中给出的步骤:

我有Win32控制台应用程序和DLL创建者应用程序。理想情况下,Win32应用程序LoadLibrary()和GetsProcAddress()会在DLL中获取特定函数的函数指针,并传递参数,返回结果,所有操作都正常

现在,我需要做的是,从控制台应用程序中,我需要调用DLL中的函数,在DLL函数中,我需要调用Win32控制台应用程序中的函数,以获取值,而不是作为参数传递

像这样的,

1) 将Win32 console项目中使用的相同头文件包含到DLL项目中。 2) 当Win32 console项目调用DLL项目内的函数时 3) 从控制台项目中获取值,对其进行处理并将值设置回控制台应用程序

dllmain.cpp:

#include "evaluate.h"

extern "C" __declspec(dllexport) int _cdecl ADD(void)
{
    int a = getValueOfA();
    int b = getValueofB();
    setValueOfC((a+b));
}
evaluate.cpp:

int getValueOfA(void)
{
    return 3;
}

int getValueOfB(void)
{
    return 5;
}

void setValueOfC(int c)
{
    printf("\nValue of C is: %d",c);
}

HINSTANCE hGetProcIDDLL;
typedef int(_cdecl *func_ptr)();
hGetProcIDDLL = LoadLibrary("MyDll.dll);
func_ptr addFunc = (func_ptr)GetProcAddress(hGetProcIDDLL, "ADD");
addFunc();
评估

int getValueOfA();
int getValueOfB();
void setValueOfC(int value);
MyDll.def:

EXPORTS
    ADD   @1

是否需要遵循其他代码或程序?这可行吗?

虽然DLL可以导入主应用程序导出的符号,但这相当复杂

一种更简单(更容易调试,因此“更好”)的方法是将函数指针传递到DLL,通过它可以回调应用程序函数

这可以作为函数指针类型的函数参数来完成,并传递给将使用它的函数。或者,它可以提前很长时间进行配置并保存在DLL中的全局变量中,需要它的函数检索该全局变量并将其用于间接调用


您可以在整个Windows API中看到回调函数指针的示例——实际上,任何名为
Enum
XYZ
的API函数都接受回调。保存函数指针以供以后使用的一个示例是窗口过程,它由注册表类存储,然后在消息处理过程中使用。
SendMessage
GetMessage
DispatchMessage
,等等。

这是您的实际代码吗?你真的有任何函数之外的语句吗?请尝试创建并向我们展示。