1 在一个win32的dll的源代码中,为什么主cpp文件(也就是dll提供给外部使用的函数放的地方),没有对应的.h文件了?但是现在我想在这个cpp中使用静态的全局变量,不知道该如何添加静态变量让我使用
2 主cpp里面有部分函数提供给外部使用似乎在一个function的头文件声明了,这样居然也可以,不知道是什么原因?(按我理解应该是对应工程文件的头文件来作这样的事情)但是还有另外一部分却没有声明(这也能使用),可是如果我想自己加些函数又说我是不能识别的parameter,请问我该如何添加自己的函数和函数实现

解决方案 »

  1.   

    1、可以把app类的声明抽出来,形成头文件。
    2、没看明白
      

  2.   

    to ouyh12345(五岭散人):
    1 主cpp文件全部都是一些函数(包括对外的short __declspec(dllexport) __stdcall这样的方式声明的函数,还有一些都是对外函数使用的函数)
    类似如下
    a.cpp文件
       short __declspec(dllexport) __stdcall a (HANDLE *hCom, char *com_port,int deviceNO) 
       {
         ...
         int para1 = b(deviceNO);
         ...
        }
        
       int b(int device)
      {
        ....
      }
      ......
    function 的头文件
      short __declspec(dllexport) __stdcall a (HANDLE * hCom, char *com_port,int action=nfc_device_comm);
      ......
      

  3.   

    你把原来的Dll移出
    再添加一次试试
      

  4.   

    1 不知道你所谓的抽取形成声明的头文件,怎么来弄?给出示例可以么?现在a.cpp中我想声明几个全局的静态变量来使用,可是不知道怎么弄,请问怎么弄?
    2 我上面列出的说明你应该可以看出,我觉的a.cpp文件里面的函数如果要声明也应该在a.h文件来声明,可是却在function.h里面声明了,而我如果想在a.cpp文件那些函数的 基础上添加几个函数,可是会报该函数是不可识别的,请问我该怎么弄才能添加上自己的函数(给dll内部使用)
      

  5.   

    to leixueqiyi:
    这个就是dll的源代码!!!我想在这个基础上进行自己的修改和完善,但是我vc很弱,所以。。
      

  6.   

    当然可以了。
    主cpp文件包含了函数声明的头文件,而b函数在a的实现之前声明了就可以。你想添加的函数报什么错?
      

  7.   

    .cpp和.h的文件名不一定要一致。
    在.cpp的开始处(所有#include)后面添加静态变量。
    如:
    static int g_size = 10;
      

  8.   

    to ouyh12345(五岭散人) :
     哦,经过你的提醒,回忆到c的语法了,经过调整,已经编译通过 ,但是全局的静态变量怎么弄?
      

  9.   

    在cpp里定义静态变量。
    在其它地方声明它,用extern
      

  10.   

    to ouyh12345(五岭散人) :
     我按照你教的,添加了,编译没问题,但是在使用这些变量的地方右键选中转到变量定义的地方,结果报该变量没有定义,请问这怎么解决了?
     另外我这些定义的全局静态变量是否当dll载入的时候就初始化且一直存在到dll卸载?
      

  11.   

    to ouyh12345(五岭散人) :
    其他地方?如果仅仅是这个cpp里面的函数使用了?能不能给出段代码
    比如
    a.cpp文件
       static handle mygod;
       .....
       short __declspec(dllexport) __stdcall a (HANDLE *hCom, char *com_port,int deviceNO) 
       {
         ...
         a = createfile(mygod,*********------这样用可以么?
         int para1 = b(deviceNO);
         ...
        }
        
       int b(int device)
      {
        ....
      }
      ......