-2

好的,我将重写问题。1. 做够了吗

class __declspec(dllexport) CXyz {
public:
int Food() {printf("Food\n");}
};

这样该类就可以在 exe 中像这样使用:

#include "CXyz.h"
CXyz obj;
obj.Food();

2.当我做CXyz x(成员和方法代码分配)时会发生什么,我的意思是它是否分配了一个大小为(近似成员大小+方法的函数指针)的线性结构,并且方法代码在.code部分的程序?当我执行 CXyz *pX 时会发生什么?

4

1 回答 1

2
  1. 不够。在客户端,CXyz 必须声明为 __declspec(dllimport)。这通常通过条件编译来完成,当某些宏在 Dll 中扩展为 __declspec(dllexport) 并在客户端项目中扩展为 __declspec(dllimport) 时。使用 VS 应用程序向导创建示例 Dll,在向导步骤之一中选中“导出符号”,然后查看它是如何完成的。当然,客户端项目应该与服务器 .lib 文件链接,并且服务器 Dll 应该在运行时可用。

  2. 仅分配类成员(可能还有 vtable)。汇编级别的类方法是具有隐藏“this”参数的全局函数。

于 2012-09-17T09:50:21.607 回答