none
Visual C++ 2005如何引用静态链接库(.lib) RRS feed

  • 问题

  • 各位好!
        1.使用Visual studio 2005 创建CLR空项目.
        2.工具-->选项-->项目和解决方案-->C++目录-->库文件-->加入C:\WINDDK\2600\Lib\WXP\i386.
        3.重新生成项目,13个错误.
        4. Link error 2019,2020,2028等.
        5.奇怪极了,只要删除库项就没事.可是我的私人电脑不会有这个问题.只有办公室的才会有.晕!!!!!!!!!!!!!!!
        先在此谢过.希望有心人能给予解答.
    2009年5月6日 11:41

答案

全部回复

  • 这样试一下呢 ?
    #paragma   comment   (lib,"libname")  

    • 已标记为答案 Fly Long 2009年5月12日 10:09
    2009年5月6日 17:50
  • 我试了一下您的建议:
        #pragma   comment   (lib,"C:\WINDDK\2600\Lib\WXP\i386\hid.lib");

    结果出现如下错误.
       错误 7 fatal error LNK1104: 无法打开文件“C:WINDDK�0LibWXPi386hid.lib” DllTest 
    2009年5月7日 0:29
  • Hi,irp,

    将#pragma   comment   (lib,"C:\WINDDK\2600\Lib\WXP\i386\hid.lib");改成#pragma   comment   (lib,"C:\\WINDDK\\2600\Lib\\WXP\\i386\\hid.lib");引用就没有问题.
    可是引用Lib就要包含头文件.#include "hidsdi.h"
    因为其是C语法吧!我又试过
     extern "C"{
        #include"hidsdi.h"
    };

    出了一大堆的错误码229个.
    错误 1 error C2146: syntax error : missing ';' before identifier 'NTSTATUS' E:\WINDDK\2600\inc\ddk\wdm\wxp\hidsdi.h 32 

    错误 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int E:\WINDDK\2600\inc\ddk\wdm\wxp\hidsdi.h 32 
    等.
    引用Lib怎么这么复杂.比动态dll还困难.

    2009年5月7日 2:23
  • 可以试一下 在winnt.h中加上以下语句

    #define POINTER_64 __ptr64

    typedef void *PVOID;
    typedef void * POINTER_64 PVOID64;

    2009年5月7日 2:31
  • hi,irp,
         您好!
         我只是生成一个WIN32的dll,又没引用Winnt.h.
         我刚才手动加了#include "winnt.h"
         并加入您的建议,可还是依然.
    2009年5月7日 3:44
  • hi,irp,
          我使用
                   extern "C"{
                        #include "hidsdi.h"
                   };
                   #pragma   comment   (lib,"C:\\WINDDK\\2600\Lib\\WXP\\i386\\hid.lib");

                   form1::form1(){
                          GUID hid_guid;
                          Hidd_GetHidGuid(&hid_guid);
                   }

             在Hidd_GetHidGuid的函数上单击右键,然后选择"转到定义"可以定位到hidsdi.h文件,并找到函数定义.
             感觉只是有可能项目什么地方编译选项错误.
             
             谢谢irp的回复.
    2009年5月7日 3:51
  • hi,irp,
         MFC规则Dll采用#pragma 与Include"filename .h"就可以通过.
         但Win32 Dll即非MFC dll便出现许许多的编译错误.

        Thanks!

    2009年5月7日 7:48