我目前有一个用非托管C++编写的控制台应用程序,源代码包括入口点main和其他一些函数。我需要从这个代码创建一个DLL,以便我可以从其他项目使用它,特别是从托管C++。 (还有一个问题:我是否需要为此编写包装器类?)
由于我对托管/非托管C++和创建DLL知之甚少,所以我按照教程this tutorial来操作,仅使用VS2010(没有CMake)就成功运行了一个简单的Hello World DLL。
然而,我的这个项目有很多依赖项(例如Point Cloud Library),因此我通常使用CMake生成Visual Studio 2010解决方案,然后构建成可执行文件,如PCL Tutorial中所述。 我该如何使用CMake构建一个能够生成DLL的VS2010项目?
总结我的问题:
由于我对托管/非托管C++和创建DLL知之甚少,所以我按照教程this tutorial来操作,仅使用VS2010(没有CMake)就成功运行了一个简单的Hello World DLL。
然而,我的这个项目有很多依赖项(例如Point Cloud Library),因此我通常使用CMake生成Visual Studio 2010解决方案,然后构建成可执行文件,如PCL Tutorial中所述。 我该如何使用CMake构建一个能够生成DLL的VS2010项目?
总结我的问题:
- 我有一个未管理的C++代码项目,需要很多依赖项。
- 我想从这个代码创建一个DLL,可以从托管的C++中调用。
额外信息: Windows 7,Visual Studio 2010 Ultimate,CMake 2.8.10.2
编辑: 我使用了更改过的CMake命令行,它按预期工作。 这是我已添加到我的头文件中的内容,我在正确的轨道上吗?
MyCode.h
#ifdef MyLib_EXPORTS
#define API_DECL __declspec( dllexport )
#else
#define API_DECL __declspec( dllimport )
#include <iostream>
#include <pcl/...>
etc...
API_DECL void myFirstFunction();
API_DECL void mySecondFunction();
#endif
MyCode.cpp:我没有对源文件进行任何更改,我需要做出任何更改吗?
#endif
应该在包含iostream
之前关闭。 - Johannes S.