因此,我开始尝试仿效多年之后,不知道从哪里开始,我已成功编写了我的第一个模拟器!现在我正在组织我的代码,以便我可以重用代码来模拟其他系统。我一直在想要有一个共享的前端“平台处理程序”,我将编译为我的可执行文件,而我将我的模拟系统代码编译成dll,平台处理程序将使用它来识别可用的内容并从中实例化。这将允许我将我的代码分成不同的项目,并使选项更加开放,使用更强大的前端和更多功能或简化的“仅游戏”,并在它们之间共享相同的dll,而不是制作两种不同的解决方案。 / p>
我知道如何编译dll vs可执行文件,但我不知道如何将可执行文件链接到自定义dll,以便我可以从中实例化一个类。我甚至不确定我在做什么是技术上可行的。 dll类需要是静态的吗?我以前从来没有编写任何类似的东西,甚至在定制dll上做了很多,所以任何帮助或想法都会受到赞赏。顺便说一句,我正在使用Visual C ++ 2010。提前感谢任何人的建议。
答案 0 :(得分:0)
你真的不必做太多不同。只需像执行函数一样从dll中导出类。在您的应用中,像往常一样包含标题和生成的lib的链接。查看此页面:http://msdn.microsoft.com/en-us/library/81h27t8c%28v=vs.80%29.aspx
example.h文件
#ifdef DLL_EXPORT
#define EXPORT_API __declspec(dllexport)
#else
#define EXPORT_API __declspec(dllimport)
#endif
class EXPORT_API Example
{
public:
Example();
~Example();
int SomeMethod();
};
int EXPORT_API ExampleFuncion();
Example.cpp
#include "Example.h"
Example::Example()
{
// construct stuff
}
Example::~Example()
{
// destruct stuff
}
int Example::SomeMethod()
{
// do stuff
return 0;
}
int EXPORT_API ExampleFunction()
{
return 0;
}
在您的dll项目中,定义DLL_EXPORT
并构建。您将获得.lib
和.dll
输出。在您将使用dll的主项目中,除了包含.lib
的标题和链接之外,您不必执行任何操作。不要在主项目中定义DLL_EXPORT
符号,并确保.dll
位于应用程序可以找到的位置。
如果你真的想变得聪明,这个问题就是为工厂设计模式而尖叫。如果你设计的界面足够好,你可以让你的dll在你的应用程序加载时注册它们的实现。您甚至可以在不重建主要可执行文件的情况下永久扩展。