如何在.dll类方法参数中传递对象
How to pass an object in a .dll Class Method parameter?
// SharpEngine.h
namespace SharpEngine {
class SharpInst {
public:
// Insert Game Engine Code.
// Use this format
// static __declspec(dllexport) type function(parameters);
static __declspec(dllexport) void saveGame(object_as_param_here)
};
}
在说'Object_as_param_here'的地方,我需要传递对象,以便该函数可以访问包含级别,经验,健康等数据的对象。
。这也位于.dll中,我将如何制作它,以便我可以与其他代码一起使用并仍然可以调用各种对象?
您可以将指针用作参数,因为dll在可执行的内存中,因此,如果您具有结构的地址和原型,则可以直接从内存访问它。我给你一个例子:
假设您的可执行文件中有一个简单的原型:
class Player
{
public:
int money;
float life;
char name[16];
};
您可以将其复制到DLL的源代码,因此您有声明,并让DLL知道如何在给出指针时访问成员。
然后,您可以将函数导出到可执行文件中,给出示例原型:
static __declspec(dllexport) void saveGame(Player *data);
现在,您可以从可执行文件中调用DLL的函数,例如:
Player *player = new Player;
player->money = 50000;
player->life = 100.0f;
saveGame(player);
,或者如果您不将播放器的类用作可执行代码中的指针,则仍然可以传递其地址:
Player player;
player.money = 50000;
player.life = 100.0f;
saveGame(&player);
以及在您的saveGame
函数中,您将作为指针访问结构:
data->money
相关文章:
- 将值从指针复制到常量对象参数
- 隐式对象参数和此指针
- 将对象传递给 Java C++与使用 JNI 逐个设置对象参数
- 如何通过对象参数从指针矢量中删除对象和指针
- 是否有一种方法可以根据派生的可能性值范围限制对象参数
- 从从可调用参数创建的线程对象参数移动构造 C++11 线程
- 为什么我不能通过传入的类对象参数杀死 pthread。
- 无法异步启动带有对象参数的函数
- 为什么在 std::transform 中使用函数对象参数失败并且需要 lambda 表达式
- 实例对象如何查看函数的对象参数的私有成员?
- 在没有对象参数编译器错误的情况下调用非静态成员函数
- 具有常数对象参数的类函数
- 模板功能没有对象参数专业
- 为什么不能在对象参数前面使用常量?
- 具有不同签名的函数对象参数的函数
- 调用非静态成员函数,没有对象参数错误
- 如何从 C# 调用具有 void* 回调和对象参数的 C++ Dll 中的函数
- 对函数使用对象参数或不使用参数
- c++错误:调用没有对象参数的非静态成员函数
- c++对象参数:多态性,值语义,对象生命周期