无法访问传递给我的DLL的对象

时间:2014-08-27 07:45:14

标签: c++ dll function-pointers msvcrt

我收到了签名

typedef Trajectory* (__stdcall* Tcreate)(const Vector* v1, const Vector* v2);

我需要能够实现一个调用名为&#34的函数的DLL;创建"

我创建了这个函数:

__declspec(dllexport) Trajectory* create(const Vector* v1, const Vector* v2)
{
    ...
}

在此功能中,我尝试访问v1的属性,例如v1->x,但我收到了错误消息:

  

无法评估表达式

当我尝试通过调试器检查变量时。

我怀疑这可能是一个问题,因为我与__stdcall*中给出的Tcreate不匹配。

如何根据Tcreate typedef创建一个允许我访问v1v2属性的功能?

__declspec(dllexport) Tcreate create(const Vector* v1, const Vector* v2)
{
}

希望如果我的函数定义与确切的签名匹配,我可以在v1v2中获取数据!

编辑: 我试图创建如下函数: __declspec(dllexport)Object * __stdcall create(const Vector * v1,const Vector * v2) { ... }

它编译,但是当我这样做时,执行程序说它无法找到函数"创建"我假设它使用的是GetProcAddress,但由于exe没有调试信息,我无法确定。

1 个答案:

答案 0 :(得分:0)

您应该使用

在调用者中导入该函数
 __declspec(dllimport) Trajectory* create(const Vector* v1, const Vector* v2);

它还取决于你的dll如何加载,显式或隐式。这是一个很好的网站,用于描述MS C ++

http://msdn.microsoft.com/en-us/library/9yd93633.aspx