本人用VS.net2005创建了一个VC++的Class library项目,在该项目中添加了些功能类,并且在类声明中使用了__declspec(export)修饰符来标识要将类全部导出(常规dll的导出方法),编译之后生成了Dll和lib.
之后,新创建了一个Win32的工程,在其中使用#pragma comment(lib,"XXX.lib")的方式引入之前的Class library.并引入头文件.在该Win32工程编译的时候一直都出错,说什么必须在/clr的Code中使用.通过网上的一些资料大概知道是要通过C++ Interop来进行调用.具体怎么做请高人指教,谢谢.
如:
Class Library项目:
Class __declspec A
{
public:
void func()
{}
};Win32项目:#pragma comment(lib,"A.lib")int APIENTRY _tWinMain()
{}另外:如果是常规dll中,要导入dll中的类在exe中使用,能用loadlibray来做吗?该怎么获取,获取函数用的是GetProcessAddr function.类怎么使用啊?谢谢.ps:分少,不好意思.
之后,新创建了一个Win32的工程,在其中使用#pragma comment(lib,"XXX.lib")的方式引入之前的Class library.并引入头文件.在该Win32工程编译的时候一直都出错,说什么必须在/clr的Code中使用.通过网上的一些资料大概知道是要通过C++ Interop来进行调用.具体怎么做请高人指教,谢谢.
如:
Class Library项目:
Class __declspec A
{
public:
void func()
{}
};Win32项目:#pragma comment(lib,"A.lib")int APIENTRY _tWinMain()
{}另外:如果是常规dll中,要导入dll中的类在exe中使用,能用loadlibray来做吗?该怎么获取,获取函数用的是GetProcessAddr function.类怎么使用啊?谢谢.ps:分少,不好意思.
Class library项目:(就写了一个测试类)
class DllExport Graphics
{
public:
Graphics()
{}
~Graphics()
{}
int Calculate(CONST int &a,CONST int &b)
{
if (&a != NULL && &b!=NULL )
{
return a+b;
}
}
};
Win32项目:
#include "stdafx.h"
#include "ClassTest.h"#pragma comment(lib,"d:\\Win32Project\\GraphicsLib\\debug\\GraphicsLib.lib")
#include "d:\\Win32Project\\GraphicsLib\\GraphicsLib\\GraphicsLib.h"class DllImport Graphics{
public:
int Calculate(int&a, int&b);
};int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
//LPCWSTR wsGraphicPath = _T("D:\\Win32Project\\GraphicsLib\\debug\\GraphicsLib.dll"); //HANDLE hGraphics = LoadLibrary(wsGraphicPath); Graphics oGraphics; int a = 9; int b = 10; oGraphics.Calculate(a, b);}
谢谢。