精华内容
下载资源
问答
  • Linux库函数制作(静态库、动态库)静态库与动态库链接方式链接分为两种:静态链接、动态链接静态链接:由链接器在链接时将库的内容加入到可执行程序中静态链接的特点是:优点:对运行环境的依赖性较,具有较好的兼容...

    Linux库函数制作(静态库、动态库)

    静态库与动态库

    链接方式

    链接分为两种:静态链接、动态链接

    静态链接:

    由链接器在链接时将库的内容加入到可执行程序中

    静态链接的特点是:

    优点:

    对运行环境的依赖性较小,具有较好的兼容性

    缺点:

    生成的程序比较大,需要更多的系统资源,在装入内存时会消耗更多的时间

    库函数有了更新,必须重新编译应用程序

    动态链接:

    连接器在链接时仅仅建立与所需库函数的之间的链接关系,在程序运行时才将所需资源调入可执行程序

    动态链接的特点:

    优点:

    在需要的时候才会调入对应的资源函数

    简化程序的升级;有着较小的程序体积

    实现进程之间的资源共享(避免重复拷贝)

    缺点:

    依赖动态库,不能独立运行

    动态库依赖版本问题严重

    /*************************************************************************

    > File Name: myprintf.c

    > Author: lsgxeva

    > Mail: lsgxeva@163.com

    > Created Time: 2017年09月28日 星期四 11时52分57秒

    ************************************************************************/

    #include

    void myprintf(void)

    {

    printf("hello, world!\n");

    }

    /*************************************************************************

    > File Name: myprintf.h

    > Author: lsgxeva

    > Mail: lsgxeva@163.com

    > Created Time: 2017年09月28日 星期四 11时53分15秒

    ************************************************************************/

    #ifndef _MYPRINTF_H_

    #define _MYPRINTF_H_

    extern void myprintf(void);

    #endif // _MYPRINTF_H_

    /*************************************************************************

    > File Name: mytest.c

    > Author: lsgxeva

    > Mail: lsgxeva@163.com

    > Created Time: 2017年09月28日 星期四 11时54分26秒

    ************************************************************************/

    #include "myprintf.h"

    int main()

    {

    myprintf();

    return 0;

    }

    目录结构

    drwxr-xr-x 5 root root 94 9月 28 12:22 .

    drwxr-xr-x 5 root root 54 9月 28 11:08 ..

    -rw-r--r-- 1 root root 360 9月 28 11:53 myprintf.c

    -rw-r--r-- 1 root root 380 9月 28 11:54 myprintf.h

    -rw-r--r-- 1 root root 351 9月 28 12:22 mytest.c

    drwxr-xr-x 2 root root 6 9月 28 12:24 output

    drwxr-xr-x 2 root root 6 9月 28 11:56 shared

    drwxr-xr-x 2 root root 6 9月 28 12:23 static

    制作静态链接库

    制作动态链接库

    解决无法打开动态库的常用简便方法:

    声明临时变量环境

    export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH

    或者修改 /etc/ld.so.conf 文件 在其中添加库的搜索路径,一行一个路径。

    sudo ldconfig 更新 /etc/ld.so.cache 文件

    那 ./etc/ld.so.conf 中所有路径的库文件都被缓存达到 /etc/ld.so.cache 中。

    注意: 将生成共享库的编译参数-shared错误地用于生成可执行文件,将导致程序运行时发生段错误!

    编译产生动态链接库,并支持 major 和 minor 版本号。

    动态链接和静态链接时,可执行文件的区别:

    Linux共享对象之编译参数fPIC

    最近在看Linux编程的基础知识,打算对一些比较有趣的知识做一些汇总备忘,本文围绕fPIC展开,学习参考见文末。

    在Linux系统中,动态链接文件称为动态共享对象(DSO,Dynamic Shared Objects),简称共享对象,一般是以.so为扩展名的文件。在Windows系统中,则称为动态链接库(Dynamic Linking Library),很多以.dll为扩展名。这里只备忘Linux的共享对象。

    在实现一共享对象时,最一般的编译链接命令行为:

    g++ -fPIC -shared test.cc -o lib.so

    或者是:

    g++ -fPIC test.cpp -c -o test.o

    ld -shared test.o -o lib.so

    上面的命令行中-shared表明产生共享库,而-fPIC则表明使用地址无关代码。PIC:Position Independent Code.

    Linux下编译共享库时,必须加上-fPIC参数,否则在链接时会有错误提示(有资料说AMD64的机器才会出现这种错误,但我在Inter的机器上也出现了):

    /usr/bin/ld: test.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC

    test.o: could not read symbols: Bad value

    collect2: ld returned 1 exit status

    如何确认一个共享对象是PIC呢?

    readelf -d foo.so |grep TEXTREL

    如果上边的shell有任何输出,则说明这foo.so不是PIC。TEXTREL表示代码段重定位表地址,PIC的共享对象不会包含任何代码段重定位表。

    fPIC的目的是什么?共享对象可能会被不同的进程加载到不同的位置上,如果共享对象中的指令使用了绝对地址、外部模块地址,那么在共享对象被加载时就必须根据相关模块的加载位置对这个地址做调整,也就是修改这些地址,让它在对应进程中能正确访问,而被修改到的段就不能实现多进程共享一份物理内存,它们在每个进程中都必须有一份物理内存的拷贝。fPIC指令就是为了让使用到同一个共享对象的多个进程能尽可能多的共享物理内存,它背后把那些涉及到绝对地址、外部模块地址访问的地方都抽离出来,保证代码段的内容可以多进程相同,实现共享。

    抽离出这部分特殊的指令、地址之后,放到了一个叫做GOT(Global Offset Table)的地方,它放在数据段中,每一个进程都有独立的一份,里面的内容可能是变量的地址、函数的地址,不同进程它的内容很可能是不同的,这部分就是被隔离开的“地址相关”内容。模块被加载的时候,会把GOT表的内容填充好(在没有延迟绑定的情况下)。代码段要访问到GOT时,通过类似于window的call/pop/sub指令得到GOT对应项的地址。

    对于模块中全局变量的访问,为了解决可执行文件跟模块可能拥有同一个全局变量的问题(此时,模块内的全局变量会被覆盖为可执行文件中的全局变量),对模块中的全局变量访问也通过GOT间接访问。

    这样子,每一次访问全局变量、外部函数都需要去计算在GOT中的位置,然后再通过对应项的值访问变量、调用函数。从运行性能上来说,比装载时重定位要差点。装载时重定位就是不使用fPIC参数,代码段需要一个重定位表,在装载时修正所有特殊地址,以后运行时不需要再有GOT位置计算和间接访问。(但是,我在自己机子上测试,编译链接共享库时,没法不使用fPIC参数,可能多数系统都要求必须有fPIC)

    如果在装载时就去计算GOT的内容,那么会影响加载速度,于是就有了延迟绑定(Lazy Binding),直到用时才去填充GOT。它使用到了PLT(Procedure Linkage Table):每一项都是一小段代码,对应于本运行模块要引用的函数。函数调用时,先到这里,然后再到GOT。在函数第一次被调用时,进入PLT跳到加载器,加载器计算函数的真正地址,然后将地址写入GOT对应项,以后的调用就直接从PLT跳到GOT记录的函数位置。这样也减少了运行时多次调用多次计算GOT位置。

    PIC的共享对象也会有重定位表,数据段中的GOT、数据的绝对地址引用,这些都是需要重定位的。

    readelf -r Lib.so

    可以看到共享对象的重定位表,.rel.dyn是对数据引用的修正,.rel.plt是对函数引用的修正。

    展开全文
  • 怎样精简jre

    千次阅读 2008-09-17 17:09:00
    怎样精简jre2007-11-22 12:20java是跨平台的东西,但有的时候我们不需要它去跨平台,我们希望能想c++做的程序一样,编码和简单处理后能够在系统...于是我找了一些相关的资料,提供链接如下:如何制作最小的RCP程序压缩包
    怎样精简jre
    2007-11-22 12:20

    java是跨平台的东西,但有的时候我们不需要它去跨平台,我们希望能想c++做的程序一样,编码和简单处理后能够在系统运行。
    这次的项目是要放到classmate pc上,这款机器是为学生订做的,系统资源很有限,一个jre1.5就70多M,放在上面肯定是不行的。于是我找了一些相关的资料,提供链接如下:
    如何制作最小的RCP程序压缩包(包含JRE)
    java程序发布之jre篇
    基本知道思路了,我把写的程序打包成jar,能双击运行了,然后拷贝一个jre到程序目录下,具体是这样的,目录叫dict,dict下面有dict.jar、jre(目录),然后写了一个cmd脚本:
    @echo off
    set path=%cd%/jre/bin
    java -jar -verbose:class dict.jar >>class.txt
    pause

    这样程序使用的就是当前目录下的jre,程序运行后,最好把所有的功能使用一遍,这样输出了一个文件class.txt,里面有所有需要的class,其格式如下:
    [Opened D:/data/dict/jre/lib/rt.jar]
    [Loaded java.lang.Object from D:/data/dict/jre/lib/rt.jar]
    [Loaded java.io.Serializable from D:/data/dict/jre/lib/rt.jar]
    [Loaded java.lang.Comparable from D:/data/dict/jre/lib/rt.jar]
    [Loaded java.lang.CharSequence from D:/data/dict/jre/lib/rt.jar]
    [Loaded org.apache.lucene.index.CompoundFileReader$FileEntry from file:/D:/data/dict/dict.jar]


    我们依照这个文件来裁剪rt.jar:
    首先在utralEdit中进行一些处理,去掉所有不是rt.jar中的class的行,去掉from后面的,去掉loaded等无关项目,再把“.”替换成“/”.这个可以利用正则表达式等轻松处理。处理完后得到的文件类似如下格式:
    java/lang/Object
    java/io/Serializable
    java/lang/Comparable
    java/lang/CharSequence
    java/lang/String

    然后写一个脚本或者程序处理,将rt中需要的的class拷贝到另一个对应的文件夹rt1,我用java写了一个,没有时间仔细改,但能完成人物了。代码如下:
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.LineNumberReader;

    我裁剪出来的rt大小为500多k。然后将rt1里面的目录和文件打包成rt.zip,改名为rt.jar,然后替换原来的rt.jar。具体的步骤可以参考上面提到的那两篇文章。

    public class ReduceRt {
    //文件拷贝
    public static boolean copy(String file1,String file2)
    {
    try //must try and catch,otherwide will compile error
    {
    // instance the File as file_in and file_out
    java.io.File file_in=new java.io.File(file1);
    java.io.File file_out=new java.io.File(file2);
    FileInputStream in1=new FileInputStream(file_in);
    FileOutputStream out1=new FileOutputStream(file_out);
    byte[] bytes=new byte[1024];
    int c;
    while((c=in1.read(bytes))!=-1)
    out1.write(bytes,0,c);
    in1.close();
    out1.close();
    return(true); //if success then return true
    }

    catch(Exception e)
    {
    System.out.println("Error!");
    return(false); //if fail then return false
    }
    }
    //读取路径,copy
    public static int dealClass(String needfile ,String sdir,String odir) throws IOException
    {
    int sn = 0; //成功个数

    File usedclass = new File(needfile);
    if(usedclass.canRead())
    {
    String line = null;
    LineNumberReader reader = new LineNumberReader(new InputStreamReader(new FileInputStream(usedclass),"UTF-8"));
    while((line = reader.readLine())!=null)
    {
    line = line.trim();
    int dirpos =line.lastIndexOf("/");
    if(dirpos>0)
    {
    String dir = odir+ line.substring(0,dirpos);
    File fdir = new File(dir);
    if(!fdir.exists())
    fdir.mkdirs();
    String sf = sdir + line + ".class";
    String of = odir + line + ".class";
    boolean copy_ok=copy(sf.trim(),of.trim());
    if(copy_ok)
    sn++;
    else
    {
    System.out.println(line);
    }

    }

    }
    }
    return sn;

    }

    public static void main(String[] args)
    {
    String needfile = "usedclass.txt";
    String sdir = "./rt/";
    String odir = "./rt1/";
    try {
    int sn = dealClass(needfile,sdir,odir);
    System.out.print(sn);
    } catch (IOException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
    }

    }

    }

    展开全文
  • ABAP制作密码输入框

    2020-11-22 13:11:29
    群内禁止发广告及其他一切无关链接小程序等,进群看公告,谢谢配合 不修改昵称会被不定期踢除,谢谢配合 这几天做一个系统维护的程序,需要用户输入用户名和密码登录。可怎样实现输入密码...

    货铺QQ群号:834508274

    微信群不能扫码进了,可以加我微信SAPliumeng拉进群,申请时请提供您哪个模块顾问,否则是一律不通过的。

    进群统一修改群名片,例如BJ_ABAP_森林木。群内禁止发广告及其他一切无关链接,小程序等,进群看公告,谢谢配合 

    不修改昵称会被不定期踢除,谢谢配合


      这几天做一个系统维护的程序,需要用户输入用户名和密码登录。可怎样实现输入密码显示星号的框呢?在其它语言中简单的选那个文本框控件作为 “Password”框显示就OK了(一般会有单行、密码和多行供选)。可在ABAP中,把I/O字段属性查了个遍,没找见类似的属性,郁闷!
    网上一搜,前人已经实现了。一看,更郁闷!居然是设置“不可见”属性!!(原以为选上他控件会消失呢!)写在这里,留个备份,也给需要的朋友作个参考。
    下面分别介绍不同界面编程的具体实现方法:
    1)选择屏幕(Selection-Screen)中实现密码框:
    假设选择屏幕中有如下声明:
    PARAMETERS txt_pass type string.
    txt_pass“是要接收密码的字段,则在选择屏幕的输出事件中加入如下代码,修改这个字段“不可见”:
    AT SELECTION-SCREEN OUTPUT.  
    loop at screen.
        if screen-name = 'TXT_PASS'.
          screen-invisible = '1'.
          modify screen.
        endif.
      endloop.
    经过上面修改,txt_pass在界面上将显示成带星号的文本域。
    2)在屏幕(Screen)中实现密码框:
    与选择屏幕上面一样,还是设置“不可见”属性,只是更简单(不用写代码了)。
    假设在屏幕设计器上放了个名叫“txt_pass”的I/O域来接收密码输入,则双击这个字段,在属性窗口下面的“显示”页勾选“不可见”(如右图所示),激活,OK
    总结:
    1SAP这个属性搞的变态(不过想一下,也有道理);
    2)自己以后可不能想当然了,要注重动手实践。
    3)上面密码数据类型我使用了stringSAP数据字典中还提供了个叫“XUNCODE”的文本元素专门用于密码数据类型,可以使用它。
     
     


    展开全文
  • 怎样精简jre 转载

    千次阅读 2009-06-16 12:19:00
    java是跨平台的东西,但有的时候我们不需要它去跨平台,我们希望能想c++做...于是我找了一些相关的资料,提供链接如下:如何制作最小的RCP程序压缩包(包含JRE)java程序发布之jre篇基本知道思路了,我把写的程序打包成

    java是跨平台的东西,但有的时候我们不需要它去跨平台,我们希望能想c++做的程序一样,编码和简单处理后能够在系统运行。
    这次的项目是要放到classmate pc上,这款机器是为学生订做的,系统资源很有限,一个jre1.5就70多M,放在上面肯定是不行的。于是我找了一些相关的资料,提供链接如下:
    如何制作最小的RCP程序压缩包(包含JRE)
    java程序发布之jre篇
    基本知道思路了,我把写的程序打包成jar,能双击运行了,然后拷贝一个jre到程序目录下,具体是这样的,目录叫dict,dict下面有dict.jar、jre(目录),然后写了一个cmd脚本:
    @echo off
    set path=%cd%/jre/bin
    java -jar -verbose:class dict.jar >>class.txt
    pause
    这样程序使用的就是当前目录下的jre,程序运行后,最好把所有的功能使用一遍,这样输出了一个文件class.txt,里面有所有需要的class,其格式如下:
    [Opened D:/data/dict/jre/lib/rt.jar]
    [Loaded java.lang.Object from D:/data/dict/jre/lib/rt.jar]
    [Loaded java.io.Serializable from D:/data/dict/jre/lib/rt.jar]
    [Loaded java.lang.Comparable from D:/data/dict/jre/lib/rt.jar]
    [Loaded java.lang.CharSequence from D:/data/dict/jre/lib/rt.jar]
    [Loaded org.apache.lucene.index.CompoundFileReader$FileEntry from file:/D:/data/dict/dict.jar]

    我们依照这个文件来裁剪rt.jar:
    首先在utralEdit中进行一些处理,去掉所有不是rt.jar中的class的行,去掉from后面的,去掉loaded等无关项目,再把“.”替换成“/”.这个可以利用正则表达式等轻松处理。处理完后得到的文件类似如下格式:
    java/lang/Object
    java/io/Serializable
    java/lang/Comparable
    java/lang/CharSequence
    java/lang/String 
    然后写一个脚本或者程序处理,将rt中需要的的class拷贝到另一个对应的文件夹rt1,我用java写了一个,没有时间仔细改,但能完成人物了。代码如下:
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.LineNumberReader;
    我裁剪出来的rt大小为500多k。然后将rt1里面的目录和文件打包成rt.zip,改名为rt.jar,然后替换原来的rt.jar。具体的步骤可以参考上面提到的那两篇文章。

    public class ReduceRt {
    //文件拷贝
    public static boolean copy(String file1,String file2)
    {
    try //must try and catch,otherwide will compile error
    {
    // instance the File as file_in and file_out
    java.io.File file_in=new java.io.File(file1);
    java.io.File file_out=new java.io.File(file2);
    FileInputStream in1=new FileInputStream(file_in);
    FileOutputStream out1=new FileOutputStream(file_out);
    byte[] bytes=new byte[1024];
    int c;
    while((c=in1.read(bytes))!=-1)
    out1.write(bytes,0,c);
    in1.close();
    out1.close();
    return(true); //if success then return true
    }

    catch(Exception e)
    {
    System.out.println("Error!");
    return(false); //if fail then return false
    }
    }
    //读取路径,copy
    public static int dealClass(String needfile ,String sdir,String odir) throws IOException
    {
    int sn = 0; //成功个数

    File usedclass = new File(needfile);
    if(usedclass.canRead())
    {
    String line = null;
    LineNumberReader reader = new LineNumberReader(new InputStreamReader(new FileInputStream(usedclass),"UTF-8"));
    while((line = reader.readLine())!=null)
    {
    line = line.trim();
    int dirpos =line.lastIndexOf("/");
    if(dirpos>0)
    {
    String dir = odir+ line.substring(0,dirpos);
    File fdir = new File(dir);
    if(!fdir.exists())
    fdir.mkdirs();
    String sf = sdir + line + ".class";
    String of = odir + line + ".class";
    boolean copy_ok=copy(sf.trim(),of.trim());
    if(copy_ok)
    sn++;
    else
    {
    System.out.println(line);
    }

    }

    }
    }
    return sn;

    }

    public static void main(String[] args)
    {
    String needfile = "usedclass.txt";
    String sdir = "./rt/";
    String odir = "./rt1/";
    try {
    int sn = dealClass(needfile,sdir,odir);
    System.out.print(sn);
    } catch (IOException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
    }

    }

    }

    展开全文
  • 但Qt Creator 默认是用动态链接的, 就是可执行程序在运行时需要相应的.dll 文件。我们点击生成的.exe 文件,首 先可能显示“没有找到mingwm10.dll,因此这个应用程序未能启动。重新安装 应用程序可能会修复此问题。...
  • Arduino 2048 游戏

    2015-07-08 22:52:00
    这个文章直接从论坛复制过来,可以点击论坛链接访问。 一、概述 ... 接触arduino三个多月,这个小制作算是测试各个示例程序后自己写的第一个完整的工程啦,主要目的是熟悉arduino IDE以及a...
  • 实例016 类似Windows XP的程序界面 20 实例017 以图形按钮显示的界面 21 实例018 以树型显示的程序界面 23 实例019 以XPManifest组件显示界面 24 实例020 动态按钮的窗体界面 25 1.6 特殊形状的窗体 26 ...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0057 动态链接库的创建与调用 36 0058 String类型和Pchar类型的用法和区别 36 0059 如何捕获异常 37 0060 TStrings与TStringList的使用 37 0061 如何实现窗体文件转换 37 第3章 程序算法 39 3.1 计算类...
  • MySQL中文参考手册

    2009-06-09 14:29:18
    o 1.8 有用的MySQL相关链接 * 2 MySQL 邮件列表及如何提问或报告错误 o 2.1 MySQL邮件列表 o 2.2 提问或报告错误 o 2.3 怎样报告错误或问题 o 2.4 在邮件列表上回答问题的指南 * 3 MySQL的许可证和技术支持 ...
  • 软件界面设计工具_3款合集

    千次下载 热门讨论 2010-06-29 03:52:47
    当您需要绘制一款应用程序的外观或显示怎样程序的各个部分连接起来时,您就可以使用GUI Design Studio来实现,如: 将产品创意文档化 制作项目提案 需求记录 创建屏幕图样 为开发人员制作详细的规格 为现有...
  • Foxpro 开发答疑160问

    2014-10-07 19:55:45
    164. 如何自动安装Visual FoxPro 6.0安装向导制作的安装程序 544 165. 如何卸载使用安装向导安装的应用程序 545 166. 如何为编译后的应用程序文件指定图标 545 167. 如何使用InstallShield制作安装程序 546 ...
  • 电子设计.doc

    2019-05-28 11:58:28
    (文件太大无法上传全部,下载的是网盘链接(内含全部文件)!!!)部分资料清单: 0001、PC 机与单片机通信(RS232 协议) 0002、C与VB语言联合在proteus上仿真 0003、IC卡读写仿真 0004、Integrate就医服务平台...
  • MYSQL

    2007-05-31 14:14:04
    1.6 顺应2000年 1.7 SQL一般信息和教程 1.8 有用的MySQL相关链接 2 MySQL 邮件列表及如何提问或报告错误 2.1 MySQL邮件列表 2.2 提问或报告错误 2.3 怎样报告错误或问题 2.4 在...
  • MySQL中文参考手册.chm

    热门讨论 2007-06-11 21:31:17
    1.6 顺应2000年 1.7 SQL一般信息和教程 1.8 有用的MySQL相关链接 2 MySQL 邮件列表及如何提问或报告错误 2.1 MySQL邮件列表 2.2 提问或报告错误 2.3 怎样报告错误或问题 ...
  • asp.net知识库

    2015-06-18 08:45:45
    页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值在2个页面之间 :要求不刷新父页面,并且不能用Querystring传值 Asp...
  • 作者: (美)Andrea Picchi ...13.4 多点触控屏幕革命会为下一代计算机带来怎样的改变 350 13.4.1 从家用到普适计算与环境智能 351 13.4.2 通信与普适计算资源 353 13.5 结 354 索引 355
  • 但是你不需要记住我,也不需要添加任何的版权,链接,完全看你的心情,你想怎样怎样!!绝对的自由!  当然整个页面很多风格看起来还有很大加强和完善的余地,但不要全盘否定哦,很多细节是陶腾多年搜索引擎优化的...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    UML结 任务3 UML静态建模机制 用例图 类图 对象图 包 使用类图的建议 用例图 用例“捕获需求” 用例图从系统外部、从用户角度出发描述系统的功能集 用例图所描述的系统功能依靠外部用户或另一...
  • dreamweaver的各种组件

    2008-06-26 16:55:56
    QuickTime Object 有了这个插件,您就可以在Dreamweaver中方便地插入QuickTime文件, 程序能自动调用相关的ActiveX,就象插入flash文件一样简单。 Awbanner 插入一会定时变换图形与连结的banner, 可设定五组连结, ...
  • 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115227867 上架时间:2010-6-2 出版日期:2010 年6月 开本:16开 页码:1033 版次:1-1 所属分类:计算机 > 数据库 > Oracle 内容简介  本书...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    4 <br>0008 为程序设置版本和帮助信息 4 <br>0009 设置Windows应用程序启动窗体 5 <br>0010 设置Web应用程序起始页 5 <br>0011 如何设置程序的出错窗口 5 <br>0012 如何进行程序调试 6 ...
  • flash shiti

    2014-03-14 10:32:41
    Flash 模拟试题及答案(一) 1.Loading应该放在影片的什麽位置? A. 影片不能有Loading B....C....D....2.Flash中设置属性的命令是?...A....B....C....D....A....B....C....D....A....B....C....D....A....B....C....D....A....B....C....D....A....B....C....D....A....B....C....D....A....B....C....D....A....
  • 你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,...

空空如也

空空如也

1 2
收藏数 23
精华内容 9
关键字:

怎样制作小程序链接