编辑:请原谅我的笨拙,我以前从未实现过包装器 .dll!:S
我一直在修改一些最近发布的 Kinect Sensor hacks(即OpenKinect和OpenNI),现在我正在尝试将功能包装在 *.dll 中,以便在我希望编写的各种“测试”程序中使用.
到目前为止,我已经建立了一个 *.dll 项目,并获得了很多库功能,但是我到处都收到了 C4251 编译器警告。
在项目设置中,我已经OpenNI.lib
静态链接了文件,到目前为止,我的库标题如下所示:
#ifdef LIBKINECT_EXPORTS
#define LIBKINECT_API __declspec(dllexport)
#else
#define LIBKINECT_API __declspec(dllimport)
#endif
// This class is exported from the LibKinect.dll
class LIBKINECT_API CLibKinect
{
public:
CLibKinect(void);
~CLibKinect(void);
bool Init(void);
protected:
private:
xn::Context m_xContext;
xn::DepthGenerator m_xDepthGen;
};
我的stdafx.h
文件包含:
#pragma once
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>
#include <XnOpenNI.h>
#include <XnCodecIDs.h>
#include <XnCppWrapper.h>
现在我尝试创建一个 Windows 控制台应用程序来测试库,但我遇到了很多error C2653: 'xn' : is not a class or namespace name
错误。我希望在应用程序中我只需要包含并链接到包装器 *.dll 而不是所有的 OpenNI 东西,以便隐藏底层实现,这是不正确的吗?