2012-03-01 65 views
0

我知道以前有类似的问题,但仍然不清楚。DLL访问应用程序的数据

我的应用程序有一个类,说ClassAppGraph,代表某种图形。我需要编写一个解析ClassAppGraph的对象并执行某些操作的DLL。

如何将我的DLL访问ClassAppGraph从应用的对象?

我知道我可以一个指针从应用程序发送到该对象的DLL,但随后如何在DLL知道类是什么样子,什么是它的数据成员和职能?我是否在包含应用程序类声明的DLL项目中包含了一个.h文件?

是否有任何其他的设计,我可以为这样的情况呢?

回答

0

由于您的应用程序加载DLL,它们共享相同的存储空间,在您的DLL函数可以访问任何应用程序的内存。只需使全局可访问的实例(例如全局静态变量)即可。在DLL源代码中,包含ClassAppGraph的头文件,则可以直接在DLL中使用ClassAppGraph *

+0

请注意,运行时环境不会验证类定义在两侧都是相同的。这意味着类版本和许多微妙的东西(例如默认调用约定,字段包装和其他编译器标志)中的不一致可能导致交互,从而破坏导出对象的DLL视图。 – 2012-03-01 04:23:09

+0

看起来应用程序和DLL都是由OP编写的。我不认为版本冲突会是问题,因为应用程序仍然与静态库链接。 – 2012-03-01 05:13:37

+0

@Cred King:是否使全局实例成为公开对象到DLL的唯一选项?我无法将指向该对象的指针作为参数传递给DLL中的函数吗? – Ritesh 2012-03-01 22:11:38

0

我会把ClassAppGraph类和实施的DLL,然后在应用程序中使用从DLL实现。很可能我会为DLL创建一个ClassBaseGraph,并且如果应用程序需要定制类,它可以继承它。

+0

我需要保持DLL简约性,因此将类“ClassAppGraph”及其实现引入DLL必须是最后一个选项。 – Ritesh 2012-03-01 22:07:48

相关问题