C++ 尝试从dll获取值

C++ 尝试从dll获取值,c++,dll,C++,Dll,我试着取一个值,值每秒钟都会改变。。并且每次都将其发送到应用程序。。我做了一个函数,把数字60还给了他。当我用应用程序调用函数时,我看到了返回的值。但是如果我想从dll中获取值,那该怎么办呢?这是所有时间的变化。并在应用程序中显示它?例如,我在弹球游戏中有codecave的源代码,可以在控制台中查看分数。控制台从dll中读取它,我想获取分数值并在我自己的应用程序中显示它。如何从dll获取应用程序的分数?并实时获取它?只需在dll控制台和我自己的应用程序中查看分数。如果符号已导出,并且您知道它的名

我试着取一个值,值每秒钟都会改变。。并且每次都将其发送到应用程序。。我做了一个函数,把数字60还给了他。当我用应用程序调用函数时,我看到了返回的值。但是如果我想从dll中获取值,那该怎么办呢?这是所有时间的变化。并在应用程序中显示它?例如,我在弹球游戏中有codecave的源代码,可以在控制台中查看分数。控制台从dll中读取它,我想获取分数值并在我自己的应用程序中显示它。如何从dll获取应用程序的分数?并实时获取它?只需在dll控制台和我自己的应用程序中查看分数。

如果符号已导出,并且您知道它的名称,则可以包含声明的标题并与库链接,也可以自己声明:

extern int whatever;

这是一个选择。第二种方法是为它提供一个getter函数,导出getter,然后动态调用它以返回您的值-research
LoadLibrary
GetProcAddress
,如果您正在编写一个库,并且希望将一些符号从这里导出到此库之外的另一段代码,最好的方法总是使用名称空间

MyExportedHeader.h和SomeCode.cpp应该作为库的一部分进行编译

MyExportedHeader.h

namespace MyNamespace
{
    extern int foo;
    extern float bar;
    extern int get_num();
};
SomeCode.cpp

namespace MyNamespace
{
    int foo = 15;
    floar bar = 25;
    int get_num()
    {
        /* CALCULATE and return the current num */
    }
};
#include <MyExportedHeader.h>
void somefn()
{
    int current_num = MyNamespace::get_num();
}
您可以在库外的代码段中使用导出的符号,例如MyApplication.cpp

MyApplication.cpp

namespace MyNamespace
{
    int foo = 15;
    floar bar = 25;
    int get_num()
    {
        /* CALCULATE and return the current num */
    }
};
#include <MyExportedHeader.h>
void somefn()
{
    int current_num = MyNamespace::get_num();
}
#包括
void somefn()
{
int current_num=MyNamespace::get_num();
}
这与直接将这些变量/函数声明为全局变量的唯一区别在于,如果两个库导出同一组符号,则会发生冲突

PS:如果您使用的是常量,最好使用枚举


编辑:根据Idohadar的要求添加了一个更简单、更详细的示例。

您已经说明了您想要什么。现在你是怎么做到的?你已经写了什么?你在这个过程中遇到了什么困难?在应用程序中尝试过:typedef int(*FuncScore);funcoscore;MyScore=(FuncScore)GetProcAddress(hDLL,“MyScore”);sprintf(获取“分数:%d”,MyScore);MsgInfo(Get);在DLL中:extern int MyScore=15;也尝试过:extern“C”uu declspec(dllexport)intmyscore=15;我正在用Loadlibrary加载dll,函数运行正常。。阿什呢?你能再解释一下吗?如果你尝试了一些东西,为什么不把它放在你原来的问题中,也许你就不会得到反对票了。你能告诉我如何使用dll Variable吗?只需尝试将一个值为15的“int”变量发送到应用程序即可。@Idohadar将示例更新为更清晰,并演示了如何在库外部访问varibale foo(库中的值为15)。我正在尝试获取一个值,该值每秒都会更改。。并且每次都将其发送到应用程序。。我做了一个函数,把数字60还给了他。当我用应用程序调用函数时,我看到了返回的值。但是如果我想从dll中获取值,那该怎么办呢?这是所有时间的变化。并在应用程序中显示它?例如,我在弹球游戏中有codecave的源代码,可以在控制台中查看分数。控制台从dll中读取它,我想获取分数值并在我自己的应用程序中显示它。如何从dll获取应用程序的分数?并实时获取它?只需在dll控制台和我自己的应用程序中查看分数..您需要在库中使用一个函数,将此值返回给调用方(即应用程序)。)