【发布时间】:2013-01-05 21:20:58
【问题描述】:
我目前有一个用非托管 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,它可以从托管 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之前关闭。 -
我认为我的 DLL 可以正常工作了。现在来处理非托管/托管的情况。谢谢!
标签: c++ visual-studio-2010 dll cmake unmanaged