本人用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:分少,不好意思.

解决方案 »

  1.   

    谢谢,我去掉了/clr支持,编译新生成了dll和lib,在Win32项目中引用报了个“error C2470: “Graphics”: 看起来像函数定义,但没有参数列表;跳过明显的函数体”的错误,不知道啥意思。代码如下:
    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);}
    谢谢。