我正在尝试获取一个值,值每秒都会改变..并且每次都将它发送给应用程序..我创建了一个函数并且返回了数字60.当我用应用程序调用该函数时,我看到了我回来的价值。但是如果我想从dll获取值,那就一直都会改变。并在应用程序中显示它?例如,我在弹球游戏中有编解码源,这让我在控制台中得分。它来自dll的控制台,我想要得分值并在我自己的应用程序中显示它。我怎么能从dll得到应用程序的分数?并实时获取它?只是为了在dll的控制台和我自己的应用程序中看到分数..
答案 0 :(得分:1)
如果您正在编写库并希望将某些符号从此处导出到此库外的另一段代码,那么最好的方法始终是使用命名空间。
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 */
}
};
您可以在库中的一段代码中使用导出的符号,例如MyApplication.cpp
<强> MyApplication.cpp 强>
#include <MyExportedHeader.h>
void somefn()
{
int current_num = MyNamespace::get_num();
}
这与将这些变量/函数直接声明为全局变量之间的唯一区别是IF两个库导出相同的符号集 - 会有冲突。
PS:如果你使用的是常量,那么最好使用Enums。
编辑:根据Idohadar的要求添加了一个更简单详细的例子。
答案 1 :(得分:0)
如果符号已导出,并且您知道其名称,则可以在其声明的位置包含标题并链接到库,或自行声明:
extern int whatever;
这是一个选择。第二个是为它设置一个getter函数,导出getter然后动态调用它来返回你的值 - 研究LoadLibrary
和GetProcAddress
。