当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 如果使listbox控件能象combobox 那样成为下拉式菜单,而不表示滚动模式? 谢谢各位了! ......
 ·为什么这样实现不了跳转    »显示摘要«
    摘要: <script language = "javascript"> function tiaozhuan(){ shenghe.submit; } </script> <form name="shenghe" method="post" action="rxdfdxw.asp">......


高分等待,dll问题一大堆+提问,同时也考考大家

1,对于生成一个win32的dll,有DllMain(...)和没有DllMain()有什么区别  
        例如我写一个win32dll工程,里面仅有一个.c文件,内容如下  
        int   Add(int   a,int   b)  
        {  
                    return   a+b;  
        }  
        他能够编译连接,并且我把生成的.lib,和.dll文件考到另一个调用dll的工程  
        相应目录中  
        然后有以下程序  
        #include   <stdio.h>  
        int   Add(int   a,int   b);  
        void   main()  
        {  
              printf("%d",Add(3,4))  
        }  
        程序居然很好的运行,是否不需要DllMain也能构成一个完整的dll  
        然而我加入DllMain好象没有什么变化啊。  
   
  2,对于一个输出的函数,有无__stdcall的区别?  
          如   _declspec(dllexport)   __stdcall   int   Add(int   a,int   b);  
          和   _declspec(dllexport)   int   Add(int   a,int   b);的区别  
  3,在一个dll的工程中函数有无_declspec(dllexport)的区别?  
  4,   用def文件声明输出函数和不写def文件的区别?  
        如MyDll.def  
        LIBRARY   MyDll  
        EXPROTS  
              Add                                     @2  
              Substract                         @3  
  5,   def文件的输出函数的编号是否不能为@1  
  6,   _declspec(dllimport)和_declspec(dllexport)的区别和用法  
  7,如果没有.lib文件,只有dll文件是否只能用LoadLibrary的方法  
  8,对于一个dll工程,如果不写def文件,那么它生成的dll就不能用       GetProcAddress     获取函数地址?  
  9,extern   "C"是什么意思,是否在函数的声明和实现出都要extern   "C"还是只要在声明出加extern   "C",在调用处的说明是否要加extern   "C"。如果函数是在.c文件里声明和实现的,是否不用加extern   "C"。如果用.c文件生成的函数,要在.cpp文件里调用,是否要在.cpp文件里的函数说明处加上extern   "C",还是什么也不用管。  
  extern   "C"到底用在什么时候。  
   
  10,对于一个静态连接库,能否用LoadLibrary+GetProcAddress的方式获取函数然后使用,对于一个.exe文件中的函数,如果想要用有什么方法吗?或者用这种方法行得通吗?  
 

NO.1   作者: DDHuang

不加dllmain可以运行,因为系统调用了默认的一个空的dllmain,你写了dllmain,就会调你的dllmain  
  2。当然有区别,压栈方式不一样  
  3。有declspec(dllexport)的函数编译器会将他写入输出节,可以由外界调用,没有的不会  
  4。def只是引出函数的一种方式,我觉得没什么区别  
  5。没见过  
  6。一个是引出函数一个是引入函数  
  7。据我所知是这样,不知道对不?  
  8。非也,完全可以  
  9。对于extern   "c"只有当你编写c++代码而不是直接编写c代码时才用他,具体来说就是告诉编译器不要对函数名做修饰  
  10   静态连接库好象不用loadlibrary吧,他的函数可以直接用啊,对与exe中的函数一般没办法调用其中函数,起码这种不行

NO.2   作者: livelivelive

4.如果不用.def文件,而dll源文件中又无#pragma   comment(linker,/export:FuncName=FuncName@N"),其中FuncName为要输出的函数名,后面的N为参数压栈字节数,则在显式加载时,用GetProcAdress无法定位函数地址。对隐式链接无影响。  
  7.是的  
  8.同4.,用def文件和用#pragma效果一样  
  9.当你用C++编译器编译dll而这个dll是由C写的程序调用时,就需要dll中加extern   "c"  
  10.对静态链接可以,但无必要;对exe似乎无调用函数的方法  
   
     
 

NO.3   作者: wzswgbx

1.有DllMain(...)和没有DllMain()的区别:  
   
  不需要DllMain也能构成一个完整的dll  
   
  当调用DLL时,会先执行此处的程序段,我们可利用此做一些初始化,DllMain(...)里也有一些参数供我们使用


    摘要: 就是更新一条记录的语句 我知道的是about这样: update weather set temp_hi = temp_hi - 2, temp_lo = temp_lo - 2 where name = 张三 and age = 19; ------------------------------------- 如果我只想更新一条记录,这样做好像有点不安全 万一有另一条名字年龄相同就有危......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE