From 303812236c45973086356d054af2c7438208719c Mon Sep 17 00:00:00 2001 From: howhow Date: Tue, 7 Feb 2017 00:56:53 -0600 Subject: [PATCH] Add files via upload --- chlp.c | 15 + ...4\345\212\250\346\200\201\345\272\223.txt" | 37 + test.cpp | 10 + ...0\347\232\204\350\257\246\350\247\243.txt" | 89 + wordtovc.cpp | 5639 +++++++++++++++++ ...273\216dll\345\257\274\345\207\272lib.txt" | 94 + ...+\346\272\220\346\226\207\344\273\266.txt" | 235 + ...4\351\235\231\346\200\201\345\272\223.txt" | 30 + 8 files changed, 6149 insertions(+) create mode 100644 chlp.c create mode 100644 "gcc\347\274\226\350\257\221\351\235\231\346\200\201\345\272\223\345\222\214\345\212\250\346\200\201\345\272\223.txt" create mode 100644 test.cpp create mode 100644 "vc++\344\270\255.dll\344\270\216.lib\346\226\207\344\273\266\347\232\204\347\224\237\346\210\220\344\270\216\344\275\277\347\224\250\347\232\204\350\257\246\350\247\243.txt" create mode 100644 wordtovc.cpp create mode 100644 "\344\273\216dll\345\257\274\345\207\272lib.txt" create mode 100644 "\345\234\250cmd\344\270\213\347\224\250cl\345\221\275\344\273\244\347\274\226\350\257\221\350\277\220\350\241\214CC++\346\272\220\346\226\207\344\273\266.txt" create mode 100644 "\345\234\250vc\344\270\255\344\275\277\347\224\250mingw\347\274\226\350\257\221\345\207\272\346\235\245\347\232\204\345\212\250\346\200\201\345\272\223\345\222\214\351\235\231\346\200\201\345\272\223.txt" diff --git a/chlp.c b/chlp.c new file mode 100644 index 0000000..0ac0697 --- /dev/null +++ b/chlp.c @@ -0,0 +1,15 @@ +#include +void print_GB2312() +{ + FILE *outFile; + unsigned char i,j; + outFile=fopen("gb2312-80.txt","wt"); + for(i=161; i<255; i++) + { + for(j=161; j<255; j++) + { + fprintf(outFile,"%c%c,%d,%d\n",i,j,i,j); + } + } + fclose(outFile); +} diff --git "a/gcc\347\274\226\350\257\221\351\235\231\346\200\201\345\272\223\345\222\214\345\212\250\346\200\201\345\272\223.txt" "b/gcc\347\274\226\350\257\221\351\235\231\346\200\201\345\272\223\345\222\214\345\212\250\346\200\201\345\272\223.txt" new file mode 100644 index 0000000..6518efb --- /dev/null +++ "b/gcc\347\274\226\350\257\221\351\235\231\346\200\201\345\272\223\345\222\214\345\212\250\346\200\201\345\272\223.txt" @@ -0,0 +1,37 @@ +gcc编译静态库和动态库 + +今天要用到静态库和动态库,于是写了几个例子来巩固一下基础。 +hello1.c ———————————————————— +#include +void print1(int i) { int j; for(j=0;j +void print2(char *arr) { char c; int i=0; while((c=arr[i++])!='\0') { printf("%d****%c\n",i,c); } } +hello.c ____________________________________________________ +void print1(int); void print2(char *); +int main(int argc,char **argv) { int i=100; char *arr="THIS IS LAYMU'S HOME!"; print1(i); print2(arr); +return 0; } + +可以看到hello.c要用到hello1.c中的print1函数和hello2.c中的print2函数。所以可以把这两个函数组合为库,以供更多的程序作为组件来调用。 + +方法一:将hello1.c和hello2.c编译成静态链接库.a +[root@localhost main5]#gcc -c hello1.c hello2.c + //将hello1.c和hello2.c分别编译为hello1.o和hello2.o,其中-c选项意为只编译不链接。 +[root@localhost main5]#ar -r libhello.a hello1.o hello2.o +//将hello1.o和hello2.o组合为libhello.a这个静态链接库 +[root@localhost main5]#cp libhello.a /usr/lib +//将libhello.a拷贝到/usr/lib目录下,作为一个系统共享的静态链接库 +[root@localhost main5]#gcc -o hello hello.c -lhello +//将hello.c编译为可执行程序hello,这个过程用到了-lhello选项,这个选项告诉gcc编译器到/usr/lib目录下去找libhello.a的静态链接库 +以上的过程类似于windows下的lib静态链接库的编译及调用过程。 +方法二:将hello1.o和hello2.o组合成动态链接库.so +[root@localhost main5]#gcc -c -fpic hello1.c hello2.c + //将hello1.c和hello2.c编译成hello1.o和hello2.o,-c意为只编译不链接,-fpic意为位置独立代码,指示编译程序生成的代码要适合共享库的内容这样的代码能够根据载入内存的位置计算内部地址。 +[root@localhost main5]#gcc -shared hello1.o hello2.o -o hello.so + //将hello1.o和hello2.o组合为shared object,即动态链接库 +[root@localhost main5]#cp hello.so /usr/lib + //将hello.so拷贝到/usr/lib目录下 +[root@localhost main5]#gcc -o hello hello.c hello.so +//将hello.c编译链接为hello的可执行程序,这个过程用到了动态链接库hello.so + +在这里要废话几句,其实一切的二进制信息都有其运作的机制,只要弄清楚了它的机制,并能够实现之,则任何此时此刻无法想象之事都将成为现实。当然,这两者之间的巨大鸿沟需要顶级的设计思想和顶级的代码来跨越。 \ No newline at end of file diff --git a/test.cpp b/test.cpp new file mode 100644 index 0000000..e24e491 --- /dev/null +++ b/test.cpp @@ -0,0 +1,10 @@ +//void print_GB2312(); + //print_GB2312(); +#include +#include + using namespace std; + string getLetter(string strText); + int main(int argc, char* argv[]) + { + cout << getLetter("中华人民共和国") << endl; + } \ No newline at end of file diff --git "a/vc++\344\270\255.dll\344\270\216.lib\346\226\207\344\273\266\347\232\204\347\224\237\346\210\220\344\270\216\344\275\277\347\224\250\347\232\204\350\257\246\350\247\243.txt" "b/vc++\344\270\255.dll\344\270\216.lib\346\226\207\344\273\266\347\232\204\347\224\237\346\210\220\344\270\216\344\275\277\347\224\250\347\232\204\350\257\246\350\247\243.txt" new file mode 100644 index 0000000..ab099c1 --- /dev/null +++ "b/vc++\344\270\255.dll\344\270\216.lib\346\226\207\344\273\266\347\232\204\347\224\237\346\210\220\344\270\216\344\275\277\347\224\250\347\232\204\350\257\246\350\247\243.txt" @@ -0,0 +1,89 @@ +vc++中.dll与.lib文件的生成与使用的详解 +-------------------------------------------------------------------------------- +两种库: +?  包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。 +?  包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。 +共有两种链接方式: +?  动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。 +?  静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数,并将库同代码一起放到可执行文件中。 + +-------------------------------------------------------------------------------- +两种文件的区别 +-------------------------------------------------------------------------------- +使用lib需注意两个文件: +?.h头文件,包含lib中说明输出的类或符号原型或数据结构。应用程序调用lib时,需要将该文件包含入应用程序的源文件中。 +?.LIB文件。 +使用dll需注意三个文件: +?.h头文件,包含dll中说明输出的类或符号原型或数据结构的.h文件。应用程序调用dll时,需要将该文件包含入应用程序的源文件中。 +?.LIB文件,是dll在编译、链接成功之后生成的文件,作用是当其他应用程序调用dll时,需要将该文件引入应用程序,否则产生错误(如果不想用lib文件或者没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress装载)。 +?dll文件,真正的可执行文件,开发成功后的应用程序在发布时,只需要有.exe文件和.dll文件,并不需要.lib文件和.h头文件。 + +-------------------------------------------------------------------------------- +生成和使用方法 +-------------------------------------------------------------------------------- +操作系统:WIN7 +开发软件:VS2010 +-------------------------------------------------------------------------------- +1.生成lib文件 +  首先,我们先建立一个控制台工程(新建->工程->控制台程序),添加add.cpp以及add.h文件。 +复制代码 代码如下: + +//sub.h +#ifndef _SUB_H +#define _SUB_H +void sub(int a,int b); +#endif +//sub.cpp +#include "sub.h" +#include +void sub(int a,int b) +{ + std::cout<<(a-b)< +#include "sub.h" //链接库的头文件 +using namespaces std; +#pragma comment(lib,"sub.lib") //加入链接库 +int main() +{ + sub(5,4); + return 0; +} + +4.仅有.dll文件时候的使用方法 +  在没有.h和.lib文件时,需要函数指针和WIN32 API函数LoadLibrary、GetProcAddress装载,只需要.dll文件即可(将.dll文件置入工程目录中)。 +复制代码 代码如下: + +#include +#include //使用函数和某些特殊变量 +typedef void (*DLLFunc)(int,int); //确定调用函数的形参 +int main() +{ + DLLFunc dllFunc; + HINSTANCE hInstLibrary = LoadLibrary("sub.dll");//加载.dll + if (hInstLibrary == NULL) + { + FreeLibrary(hInstLibrary); + } + dllFunc = (DLLFunc)GetProcAddress(hInstLibrary, "sub");//第二个参数为要调用的函数名称 + if (dllFunc == NULL) + { + FreeLibrary(hInstLibrary); + } + dllFunc(5,4); + FreeLibrary(hInstLibrary); + return(1); +} + +   最近一直在搞API这东西,用了curl、tinyxml和jsoncpp几种开源的库,在linux下使用倒是很方便,在windows下还是自己编译的遇到了点问题,从新整理学习下,备用~~ \ No newline at end of file diff --git a/wordtovc.cpp b/wordtovc.cpp new file mode 100644 index 0000000..d47ac02 --- /dev/null +++ b/wordtovc.cpp @@ -0,0 +1,5639 @@ +#include +#include +using namespace std; + +string findLetter(int nCode); + +string getLetter(string strText) +{ + bool m_blnSimaple = false; + bool m_blnFirstBig = true; + bool m_blnAllBiG = true; + bool m_LetterEnd = false; + + unsigned char ucHigh, ucLow; + int nCode, j; + string strValue = ""; + for (int i = 0; i0) + { + strRes = strRes.substr(0, 1); + + } + if (!m_blnFirstBig) + { + //strRes.SetAt(0,strRes.GetAt(0)+32); + strRes[0] = strRes[0] + 32; + } + if (!m_blnAllBiG) + { + for (j = 1; j= 1601 && nCode <= 1602) + { + strValue = "A"; + break; + } + if (nCode >= 1603 && nCode <= 1615) + { + strValue = "AI"; + break; + } + if (nCode >= 1616 && nCode <= 1624) + { + strValue = "AN"; + break; + } + if (nCode >= 1625 && nCode <= 1627) + { + strValue = "ANG"; + break; + } + if (nCode >= 1628 && nCode <= 1636) + { + strValue = "AO"; + break; + } + if (nCode >= 1637 && nCode <= 1654) + { + strValue = "BA"; + break; + } + if (nCode >= 1655 && nCode <= 1662) + { + strValue = "BAI"; + break; + } + if (nCode >= 1663 && nCode <= 1677) + { + strValue = "BAN"; + break; + } + if (nCode >= 1678 && nCode <= 1689) + { + strValue = "BANG"; + break; + } + if (nCode >= 1690 && nCode <= 1712) + { + strValue = "BAO"; + break; + } + if (nCode >= 1713 && nCode <= 1727) + { + strValue = "BEI"; + break; + } + if (nCode >= 1728 && nCode <= 1731) + { + strValue = "BEN"; + break; + } + if (nCode >= 1732 && nCode <= 1737) + { + strValue = "BENG"; + break; + } + if (nCode>1738 && nCode <= 1761) + { + strValue = "BI"; + break; + } + if (nCode >= 1762 && nCode <= 1773) + { + strValue = "BIAN"; + break; + } + if (nCode >= 1774 && nCode <= 1777) + { + strValue = "BIAO"; + break; + } + if (nCode >= 1778 && nCode <= 1781) + { + strValue = "BIE"; + break; + } + if (nCode >= 1782 && nCode <= 1787) + { + strValue = "BIN"; + break; + } + if (nCode >= 1788 && nCode <= 1794) + { + strValue = "BING"; + break; + } + if (nCode >= 1801 && nCode <= 1802) + { + strValue = "BING"; + break; + } + if (nCode >= 1803 && nCode <= 1821) + { + strValue = "BO"; + break; + } + if (nCode >= 1822 && nCode <= 1832) + { + strValue = "BU"; + break; + } + if (nCode == 1833) + { + strValue = "CA"; + break; + } + if (nCode >= 1834 && nCode <= 1844) + { + strValue = "CAI"; + break; + } + if (nCode >= 1845 && nCode <= 1851) + { + strValue = "CAN"; + break; + } + if (nCode >= 1852 && nCode <= 1856) + { + strValue = "CANG"; + break; + } + if (nCode >= 1857 && nCode <= 1861) + { + strValue = "CAO"; + break; + } + if (nCode >= 1862 && nCode <= 1866) + { + strValue = "CE"; + break; + } + if (nCode >= 1867 && nCode <= 1868) + { + strValue = "CENG"; + break; + } + if (nCode >= 1869 && nCode <= 1879) + { + strValue = "CHA"; + break; + } + if (nCode >= 1880 && nCode <= 1882) + { + strValue = "CHAI"; + break; + } + if (nCode >= 1883 && nCode <= 1892) + { + strValue = "CHAN"; + break; + } + if (nCode >= 1893 && nCode <= 1911) + { + strValue = "CHANG"; + break; + } + if (nCode >= 1912 && nCode <= 1920) + { + strValue = "CHAO"; + break; + } + if (nCode >= 1921 && nCode <= 1926) + { + strValue = "CHE"; + break; + } + if (nCode >= 1927 && nCode <= 1936) + { + strValue = "CHEN"; + break; + } + if (nCode >= 1937 && nCode <= 1951) + { + strValue = "CHENG"; + break; + } + if (nCode >= 1952 && nCode <= 1967) + { + strValue = "CHI"; + break; + } + if (nCode >= 1968 && nCode <= 1972) + { + strValue = "CHONG"; + break; + } + if (nCode >= 1973 && nCode <= 1984) + { + strValue = "CHOU"; + break; + } + if (nCode >= 1985 && nCode <= 2006) + { + strValue = "CHU"; + break; + } + if (nCode == 2007) + { + strValue = "CHUAI"; + break; + } + if (nCode >= 2008 && nCode <= 2014) + { + strValue = "CHUAN"; + break; + } + if (nCode >= 2015 && nCode <= 2020) + { + strValue = "CHUANG"; + break; + } + if (nCode >= 2021 && nCode <= 2025) + { + strValue = "CHUI"; + break; + } + if (nCode >= 2026 && nCode <= 2032) + { + strValue = "CHUN"; + break; + } + if (nCode >= 2033 && nCode <= 2034) + { + strValue = "CHUO"; + break; + } + if (nCode >= 2035 && nCode <= 2046) + { + strValue = "CI"; + break; + } + if (nCode >= 2047 && nCode <= 2052) + { + strValue = "CONG"; + break; + } + if (nCode >= 2054 && nCode <= 2057) + { + strValue = "CU"; + break; + } + if (nCode >= 2058 && nCode <= 2060) + { + strValue = "CUAN"; + break; + } + if (nCode >= 2061 && nCode <= 2068) + { + strValue = "CUI"; + break; + } + if (nCode >= 2069 && nCode <= 2071) + { + strValue = "CUN"; + break; + } + if (nCode >= 2072 && nCode <= 2077) + { + strValue = "CUO"; + break; + } + if (nCode >= 2078 && nCode <= 2083) + { + strValue = "DA"; + break; + } + if (nCode >= 2084 && nCode <= 2094) + { + strValue = "DAI"; + break; + } + if (nCode >= 2102 && nCode <= 2116) + { + strValue = "DAN"; + break; + } + if (nCode >= 2117 && nCode <= 2121) + { + strValue = "DANG"; + break; + } + if (nCode >= 2122 && nCode <= 2133) + { + strValue = "DAO"; + break; + } + if (nCode >= 2134 && nCode <= 2136) + { + strValue = "DE"; + break; + } + if (nCode >= 2137 && nCode <= 2143) + { + strValue = "DENG"; + break; + } + if (nCode >= 2144 && nCode <= 2162) + { + strValue = "DI"; + break; + } + if (nCode >= 2163 && nCode <= 2178) + { + strValue = "DIAN"; + break; + } + if (nCode >= 2179 && nCode <= 2187) + { + strValue = "DIAO"; + break; + } + if (nCode >= 2188 && nCode <= 2194) + { + strValue = "DIE"; + break; + } + if (nCode >= 2201 && nCode <= 2209) + { + strValue = "DING"; + break; + } + if (nCode == 2210) + { + strValue = "DIU"; + break; + } + if (nCode >= 2211 && nCode <= 2220) + { + strValue = "DONG"; + break; + } + if (nCode >= 2221 && nCode <= 2227) + { + strValue = "DOU"; + break; + } + if (nCode >= 2228 && nCode <= 2242) + { + strValue = "DU"; + break; + } + if (nCode >= 2243 && nCode <= 2248) + { + strValue = "DUAN"; + break; + } + if (nCode >= 2249 && nCode <= 2252) + { + strValue = "DUI"; + break; + } + if (nCode >= 2253 && nCode <= 2261) + { + strValue = "DUN"; + break; + } + if (nCode >= 2262 && nCode <= 2273) + { + strValue = "DUO"; + break; + } + if (nCode >= 2274 && nCode <= 2286) + { + strValue = "E"; + break; + } + if (nCode == 2287) + { + strValue = "EN"; + break; + } + if (nCode >= 2288 && nCode <= 2231) + { + strValue = "ER"; + break; + } + if (nCode >= 2302 && nCode <= 2309) + { + strValue = "FA"; + break; + } + if (nCode >= 2310 && nCode <= 2326) + { + strValue = "FAN"; + break; + } + if (nCode >= 2327 && nCode <= 2337) + { + strValue = "FANG"; + break; + } + if (nCode >= 2338 && nCode <= 2349) + { + strValue = "FEI"; + break; + } + if (nCode >= 2350 && nCode <= 2364) + { + strValue = "FEN"; + break; + } + if (nCode >= 2365 && nCode <= 2379) + { + strValue = "FENG"; + break; + } + if (nCode == 2380) + { + strValue = "FO"; + break; + } + if (nCode == 2381) + { + strValue = "FOU"; + break; + } + if (nCode >= 2382 && nCode <= 2432) + { + strValue = "FU"; + break; + } + if (nCode >= 2435 && nCode <= 2440) + { + strValue = "GAI"; + break; + } + if (nCode >= 2441 && nCode <= 2451) + { + strValue = "GAN"; + break; + } + if (nCode >= 2452 && nCode <= 2460) + { + strValue = "GANG"; + break; + } + if (nCode >= 2461 && nCode <= 2470) + { + strValue = "GAO"; + break; + } + if (nCode >= 2471 && nCode <= 2487) + { + strValue = "GE"; + break; + } + if (nCode == 2488) + { + strValue = "GEI"; + break; + } + if (nCode >= 2489 && nCode <= 2490) + { + strValue = "GEN"; + break; + } + if (nCode >= 2491 && nCode <= 2503) + { + strValue = "GENG"; + break; + } + if (nCode >= 2504 && nCode <= 2518) + { + strValue = "GONG"; + break; + } + if (nCode >= 2519 && nCode <= 2527) + { + strValue = "GOU"; + break; + } + if (nCode >= 2528 && nCode <= 2545) + { + strValue = "GU"; + break; + } + if (nCode >= 2546 && nCode <= 2551) + { + strValue = "GUA"; + break; + } + if (nCode >= 2552 && nCode <= 2554) + { + strValue = "GUAI"; + break; + } + if (nCode >= 2555 && nCode <= 2565) + { + strValue = "GUAN"; + break; + } + if (nCode >= 2566 && nCode <= 2568) + { + strValue = "GUANG"; + break; + } + if (nCode >= 2569 && nCode <= 2584) + { + strValue = "GUI"; + break; + } + if (nCode >= 2585 && nCode <= 2587) + { + strValue = "GUN"; + break; + } + if (nCode >= 2588 && nCode <= 2593) + { + strValue = "GUO"; + break; + } + if (nCode == 2594) + { + strValue = "HA"; + break; + } + if (nCode >= 2601 && nCode <= 2607) + { + strValue = "HAI"; + break; + } + if (nCode >= 2608 && nCode <= 2626) + { + strValue = "HAN"; + break; + } + if (nCode >= 2627 && nCode <= 2629) + { + strValue = "HANG"; + break; + } + if (nCode >= 2630 && nCode <= 2638) + { + strValue = "HAO"; + break; + } + if (nCode >= 2639 && nCode <= 2656) + { + strValue = "HE"; + break; + } + if (nCode >= 2657 && nCode <= 2658) + { + strValue = "HEI"; + break; + } + if (nCode >= 2659 && nCode <= 2662) + { + strValue = "HEN"; + break; + } + if (nCode >= 2663 && nCode <= 2667) + { + strValue = "HENG"; + break; + } + if (nCode >= 2668 && nCode <= 2676) + { + strValue = "HONG"; + break; + } + if (nCode >= 2677 && nCode <= 2683) + { + strValue = "HOU"; + break; + } + if (nCode >= 2684 && nCode <= 2707) + { + strValue = "HU"; + break; + } + if (nCode >= 2708 && nCode <= 2716) + { + strValue = "HUA"; + break; + } + if (nCode >= 2717 && nCode <= 2721) + { + strValue = "HUAI"; + break; + } + if (nCode >= 2722 && nCode <= 2735) + { + strValue = "HUAN"; + break; + } + if (nCode >= 2736 && nCode <= 2749) + { + strValue = "HUANG"; + break; + } + if (nCode >= 2750 && nCode <= 2770) + { + strValue = "HUI"; + break; + } + if (nCode >= 2771 && nCode <= 2776) + { + strValue = "HUN"; + break; + } + if (nCode >= 2777 && nCode <= 2786) + { + strValue = "HUO"; + break; + } + if (nCode >= 2787 && nCode <= 2845) + { + strValue = "JI"; + break; + } + if (nCode >= 2846 && nCode <= 2862) + { + strValue = "JIA"; + break; + } + if (nCode >= 2863 && nCode <= 2908) + { + strValue = "JIAN"; + break; + } + if (nCode >= 2909 && nCode <= 2921) + { + strValue = "JIANG"; + break; + } + if (nCode >= 2922 && nCode <= 2949) + { + strValue = "JIAO"; + break; + } + if (nCode >= 2950 && nCode <= 2976) + { + strValue = "JIE"; + break; + } + if (nCode >= 2977 && nCode <= 3002) + { + strValue = "JIN"; + break; + } + if (nCode >= 3003 && nCode <= 3027) + { + strValue = "JING"; + break; + } + if (nCode >= 3028 && nCode <= 3029) + { + strValue = "JIONG"; + break; + } + if (nCode >= 3030 && nCode <= 3046) + { + strValue = "JIU"; + break; + } + if (nCode >= 3047 && nCode <= 3071) + { + strValue = "JU"; + break; + } + if (nCode >= 3072 && nCode <= 3078) + { + strValue = "JUAN"; + break; + } + if (nCode >= 3079 && nCode <= 3088) + { + strValue = "JUE"; + break; + } + if (nCode >= 3089 && nCode <= 3105) + { + strValue = "JUN"; + break; + } + if (nCode >= 3106 && nCode <= 3109) + { + strValue = "KA"; + break; + } + if (nCode >= 3110 && nCode <= 3114) + { + strValue = "KAI"; + break; + } + if (nCode >= 3115 && nCode <= 3120) + { + strValue = "KAN"; + break; + } + if (nCode >= 3121 && nCode <= 3127) + { + strValue = "KANG"; + break; + } + if (nCode >= 3128 && nCode <= 3131) + { + strValue = "KAO"; + break; + } + if (nCode >= 3132 && nCode <= 3146) + { + strValue = "KE"; + break; + } + if (nCode >= 3147 && nCode <= 3150) + { + strValue = "KEN"; + break; + } + if (nCode >= 3151 && nCode <= 3152) + { + strValue = "KENG"; + break; + } + if (nCode >= 3153 && nCode <= 3156) + { + strValue = "KONG"; + break; + } + if (nCode >= 3157 && nCode <= 3160) + { + strValue = "KOU"; + break; + } + if (nCode >= 3161 && nCode <= 3167) + { + strValue = "KU"; + break; + } + if (nCode >= 3168 && nCode <= 3172) + { + strValue = "KUA"; + break; + } + if (nCode >= 3173 && nCode <= 3176) + { + strValue = "KUAI"; + break; + } + if (nCode >= 3177 && nCode <= 3178) + { + strValue = "KUAN"; + break; + } + if (nCode >= 3179 && nCode <= 3186) + { + strValue = "KUANG"; + break; + } + if (nCode >= 3187 && nCode <= 3203) + { + strValue = "KUI"; + break; + } + if (nCode >= 3204 && nCode <= 3207) + { + strValue = "KUN"; + break; + } + if (nCode >= 3208 && nCode <= 3211) + { + strValue = "KUO"; + break; + } + if (nCode >= 3212 && nCode <= 3218) + { + strValue = "LA"; + break; + } + if (nCode >= 3219 && nCode <= 3221) + { + strValue = "LAI"; + break; + } + if (nCode >= 3222 && nCode <= 3236) + { + strValue = "LAN"; + break; + } + if (nCode >= 3237 && nCode <= 3243) + { + strValue = "LANG"; + break; + } + if (nCode >= 3244 && nCode <= 3252) + { + strValue = "LAO"; + break; + } + if (nCode >= 3253 && nCode <= 3254) + { + strValue = "LE"; + break; + } + if (nCode >= 3255 && nCode <= 3265) + { + strValue = "LEI"; + break; + } + if (nCode >= 3266 && nCode <= 3268) + { + strValue = "LENG"; + break; + } + if (nCode >= 3269 && nCode <= 3308) + { + strValue = "LI"; + } + if (nCode == 3309) + { + strValue = "LIA"; + break; + } + if (nCode >= 3310 && nCode <= 3323) + { + strValue = "LIAN"; + break; + } + if (nCode >= 3324 && nCode <= 3334) + { + strValue = "LIANG"; + break; + } + if (nCode >= 3335 && nCode <= 3347) + { + strValue = "LIAO"; + break; + } + if (nCode >= 3348 && nCode <= 3352) + { + strValue = "LIE"; + break; + } + if (nCode >= 3353 && nCode <= 3363) + { + strValue = "LIN"; + break; + } + if (nCode >= 3364 && nCode <= 3378) + { + strValue = "LING"; + break; + } + if (nCode >= 3379 && nCode <= 3389) + { + strValue = "LIU"; + break; + } + if (nCode >= 3390 && nCode <= 3404) + { + strValue = "LONG"; + break; + } + if (nCode >= 3405 && nCode <= 3410) + { + strValue = "LOU"; + break; + } + if (nCode >= 3411 && nCode <= 3444) + { + strValue = "LU"; + break; + } + if (nCode >= 3445 && nCode <= 3450) + { + strValue = "LUAN"; + break; + } + if (nCode >= 3451 && nCode <= 3452) + { + strValue = "LUE"; + break; + } + if (nCode >= 3453 && nCode <= 3459) + { + strValue = "LUN"; + break; + } + if (nCode >= 3460 && nCode <= 3471) + { + strValue = "LUO"; + break; + } + if (nCode >= 3472 && nCode <= 3480) + { + strValue = "MA"; + break; + } + if (nCode >= 3481 && nCode <= 3486) + { + strValue = "MAI"; + break; + } + if (nCode >= 3487 && nCode <= 3501) + { + strValue = "MAN"; + break; + } + if (nCode >= 3502 && nCode <= 3507) + { + strValue = "MANG"; + break; + } + if (nCode >= 3508 && nCode <= 3519) + { + strValue = "MAO"; + break; + } + if (nCode == 3520) + { + strValue = "ME"; + break; + } + if (nCode >= 3521 && nCode <= 3536) + { + strValue = "MEI"; + break; + } + if (nCode >= 3537 && nCode <= 3539) + { + strValue = "MEN"; + break; + } + if (nCode >= 3540 && nCode <= 3547) + { + strValue = "MENG"; + break; + } + if (nCode >= 3548 && nCode <= 3561) + { + strValue = "MI"; + } + if (nCode >= 3562 && nCode <= 3570) + { + strValue = "MIAN"; + break; + } + if (nCode >= 3571 && nCode <= 3578) + { + strValue = "MIAO"; + break; + } + if (nCode >= 3579 && nCode <= 3580) + { + strValue = "MIE"; + break; + } + if (nCode >= 3581 && nCode <= 3586) + { + strValue = "MIN"; + break; + } + if (nCode >= 3587 && nCode <= 3592) + { + strValue = "MING"; + break; + } + if (nCode == 3593) + { + strValue == "MIU"; + break; + } + if (nCode >= 3594 && nCode <= 3616) + { + strValue = "MO"; + break; + } + if (nCode >= 3617 && nCode <= 3619) + { + strValue = "MOU"; + break; + } + if (nCode >= 3620 && nCode <= 3634) + { + strValue = "MU"; + break; + } + if (nCode >= 3635 && nCode <= 3641) + { + strValue = "NA"; + break; + } + if (nCode >= 3642 && nCode <= 3646) + { + strValue = "NAI"; + break; + } + if (nCode >= 3647 && nCode <= 3649) + { + strValue = "NAN"; + break; + } + if (nCode == 3650) + { + strValue = "NANG"; + break; + } + if (nCode >= 3651 && nCode <= 3655) + { + strValue = "NAO"; + break; + } + if (nCode == 3656) + { + strValue = "NE"; + break; + } + if (nCode >= 3657 && nCode <= 3658) + { + strValue = "NEI"; + break; + } + if (nCode == 3659) + { + strValue = "NEN"; + break; + } + if (nCode == 3660) + { + strValue = "NENG"; + break; + } + if (nCode >= 3661 && nCode <= 3671) + { + strValue = "NI"; + break; + } + if (nCode >= 3672 && nCode <= 3678) + { + strValue = "NIAN"; + break; + } + if (nCode >= 3679 && nCode <= 3680) + { + strValue = "NIANG"; + break; + } + if (nCode >= 3681 && nCode <= 3682) + { + strValue = "NIAO"; + break; + } + if (nCode >= 3683 && nCode <= 3689) + { + strValue = "NIE"; + break; + } + if (nCode == 3690) + { + strValue = "NIN"; + break; + } + if (nCode >= 3691 && nCode <= 3702) + { + strValue = "NING"; + break; + } + if (nCode >= 3703 && nCode <= 3706) + { + strValue = "NIU"; + break; + } + if (nCode >= 3707 && nCode <= 3710) + { + strValue = "NONG"; + break; + } + if (nCode >= 3711 && nCode <= 3714) + { + strValue = "NU"; + break; + } + if (nCode == 3715) + { + strValue = "NUAN"; + break; + } + if (nCode >= 3716 && nCode <= 3717) + { + strValue = "NUE"; + break; + } + if (nCode >= 3718 && nCode <= 3721) + { + strValue = "NUO"; + break; + } + if (nCode == 3722) + { + strValue = "O"; + break; + } + if (nCode >= 3723 && nCode <= 3729) + { + strValue = "OU"; + break; + } + if (nCode >= 3730 && nCode <= 3735) + { + strValue = "PA"; + break; + } + if (nCode >= 3736 && nCode <= 3741) + { + strValue = "PAI"; + break; + } + if (nCode >= 3742 && nCode <= 3749) + { + strValue = "PAN"; + break; + } + if (nCode >= 3750 && nCode <= 3754) + { + strValue = "PANG"; + break; + } + if (nCode >= 3755 && nCode <= 3761) + { + strValue = "PAO"; + break; + } + if (nCode >= 3762 && nCode <= 3770) + { + strValue = "PEI"; + break; + } + if (nCode >= 3771 && nCode <= 3772) + { + strValue = "PEN"; + break; + } + if (nCode >= 3773 && nCode <= 3786) + { + strValue = "PENG"; + break; + } + if (nCode >= 3787 && nCode <= 3809) + { + strValue = "PI"; + break; + } + if (nCode >= 3810 && nCode <= 3813) + { + strValue = "PIAN"; + break; + } + if (nCode >= 3814 && nCode <= 3817) + { + strValue = "PIAO"; + break; + } + if (nCode >= 3818 && nCode <= 3819) + { + strValue = "PIE"; + break; + } + if (nCode >= 3820 && nCode <= 3824) + { + strValue = "PIN"; + break; + } + if (nCode >= 3825 && nCode <= 3833) + { + strValue = "PING"; + break; + } + if (nCode >= 3834 && nCode <= 3841) + { + strValue = "PO"; + break; + } + if (nCode == 3842) + { + strValue = "POU"; + break; + } + if (nCode >= 3843 && nCode <= 3857) + { + strValue = "PU"; + break; + } + if (nCode >= 3858 && nCode <= 3893) + { + strValue = "QI"; + break; + } + if (nCode == 3894 || nCode >= 3901 && nCode <= 3902) + { + strValue = "QIA"; + break; + } + if (nCode >= 3903 && nCode <= 3924) + { + strValue = "QIAN"; + break; + } + if (nCode >= 3925 && nCode <= 3932) + { + strValue = "QIANG"; + break; + } + if (nCode >= 3933 && nCode <= 3947) + { + strValue = "QIAO"; + break; + } + if (nCode >= 3948 && nCode <= 3952) + { + strValue = "QIE"; + break; + } + if (nCode >= 3953 && nCode <= 3963) + { + strValue = "QIN"; + break; + } + if (nCode >= 3964 && nCode <= 3976) + { + strValue = "QING"; + break; + } + if (nCode >= 3977 && nCode <= 3978) + { + strValue = "QIONG"; + break; + } + if (nCode >= 3979 && nCode <= 3986) + { + strValue = "QIU"; + break; + } + if (nCode >= 3987 && nCode <= 4005) + { + strValue = "QU"; + break; + } + if (nCode >= 4006 && nCode <= 4016) + { + strValue = "QUAN"; + break; + } + if (nCode >= 4017 && nCode <= 4024) + { + strValue = "QUE"; + break; + } + if (nCode >= 4025 && nCode <= 4026) + { + strValue = "QUN"; + break; + } + if (nCode >= 4027 && nCode <= 4030) + { + strValue = "RAN"; + break; + } + if (nCode >= 4031 && nCode <= 4035) + { + strValue = "RANG"; + } + if (nCode >= 4036 && nCode <= 4038) + { + strValue = "RAO"; + break; + } + if (nCode >= 4039 && nCode <= 4040) + { + strValue = "RE"; + break; + } + if (nCode >= 4041 && nCode <= 4050) + { + strValue = "REN"; + break; + } + if (nCode >= 4051 && nCode <= 4052) + { + strValue = "RENG"; + break; + } + if (nCode == 4053) + { + strValue = "RI"; + break; + } + if (nCode >= 4054 && nCode <= 4063) + { + strValue = "RONG"; + break; + } + if (nCode >= 4064 && nCode <= 4066) + { + strValue = "ROU"; + break; + } + if (nCode >= 4067 && nCode <= 4076) + { + strValue = "RU"; + break; + } + if (nCode >= 4077 && nCode <= 4078) + { + strValue = "RUAN"; + break; + } + if (nCode >= 4079 && nCode <= 4081) + { + strValue = "RUI"; + break; + } + if (nCode >= 4082 && nCode <= 4083) + { + strValue = "RUN"; + break; + } + if (nCode >= 4084 && nCode <= 4085) + { + strValue = "RUO"; + break; + } + if (nCode >= 4086 && nCode <= 4088) + { + strValue = "SA"; + break; + } + if (nCode >= 4089 && nCode <= 4092) + { + strValue = "SAI"; + break; + } + if (nCode >= 4093 && nCode <= 4094) + { + strValue = "SAN"; + break; + } + if (nCode >= 4101 && nCode <= 4102) + { + strValue = "SAN"; + break; + } + if (nCode >= 4103 && nCode <= 4105) + { + strValue = "SANG"; + break; + } + if (nCode >= 4106 && nCode <= 4109) + { + strValue = "SAO"; + break; + } + if (nCode >= 4110 && nCode <= 4112) + { + strValue = "SE"; + break; + } + if (nCode == 4113) + { + strValue = "SEN"; + } + if (nCode == 4114) + { + strValue = "SENG"; + break; + } + if (nCode >= 4115 && nCode <= 4123) + { + strValue = "SHA"; + break; + } + if (nCode >= 4124 && nCode <= 4125) + { + strValue = "SHAI"; + break; + } + if (nCode >= 4126 && nCode <= 4141) + { + strValue = "SHAN"; + break; + } + if (nCode >= 4142 && nCode <= 4149) + { + strValue = "SHANG"; + break; + } + if (nCode >= 4150 && nCode <= 4160) + { + strValue = "SHAO"; + break; + } + if (nCode >= 4161 && nCode <= 4172) + { + strValue = "SHE"; + break; + } + if (nCode >= 4173 && nCode <= 4188) + { + strValue = "SHEN"; + break; + } + if (nCode >= 4189 && nCode <= 4205) + { + strValue = "SHENG"; + break; + } + if (nCode >= 4206 && nCode <= 4252) + { + strValue = "SHI"; + break; + } + if (nCode >= 4253 && nCode <= 4262) + { + strValue = "SHOU"; + break; + } + if (nCode >= 4263 && nCode <= 4301) + { + strValue = "SHU"; + break; + } + if (nCode >= 4302 && nCode <= 4303) + { + strValue = "SHUA"; + break; + } + if (nCode >= 4304 && nCode <= 4307) + { + strValue = "SHUAI"; + break; + } + if (nCode >= 4308 && nCode <= 4309) + { + strValue = "SHUAN"; + break; + } + if (nCode >= 4310 && nCode <= 4312) + { + strValue = "SHUANG"; + break; + } + if (nCode >= 4313 && nCode <= 4316) + { + strValue = "SHUI"; + break; + } + if (nCode >= 4317 && nCode <= 4320) + { + strValue = "SHUN"; + break; + } + if (nCode >= 4321 && nCode <= 4324) + { + strValue = "SHUO"; + break; + } + if (nCode >= 4325 && nCode <= 4340) + { + strValue = "SI"; + break; + } + if (nCode >= 4341 && nCode <= 4348) + { + strValue = "SONG"; + break; + } + if (nCode >= 4349 && nCode <= 4352) + { + strValue = "SOU"; + break; + } + if (nCode >= 4353 && nCode <= 4364) + { + strValue = "SU"; + break; + } + if (nCode >= 4365 && nCode <= 4367) + { + strValue = "SUAN"; + break; + } + if (nCode >= 4368 && nCode <= 4378) + { + strValue = "SUI"; + break; + } + if (nCode >= 4379 && nCode <= 4381) + { + strValue = "SUN"; + break; + } + if (nCode >= 4382 && nCode <= 4389) + { + strValue = "SUO"; + break; + } + if (nCode >= 4390 && nCode <= 4404) + { + strValue = "TA"; + break; + } + if (nCode >= 4405 && nCode <= 4413) + { + strValue = "TAI"; + break; + } + if (nCode >= 4414 && nCode <= 4431) + { + strValue = "TAN"; + break; + } + if (nCode >= 4432 && nCode <= 4444) + { + strValue = "TANG"; + break; + } + if (nCode >= 4445 && nCode <= 4455) + { + strValue = "TAO"; + break; + } + if (nCode == 4456) + { + strValue = "TE"; + break; + } + if (nCode >= 4457 && nCode <= 4460) + { + strValue = "TENG"; + break; + } + if (nCode >= 4461 && nCode <= 4475) + { + strValue = "TI"; + break; + } + if (nCode >= 4476 && nCode <= 4483) + { + strValue = "TIAN"; + break; + } + if (nCode >= 4484 && nCode <= 4488) + { + strValue = "TIAO"; + break; + } + if (nCode >= 4489 && nCode <= 4491) + { + strValue = "TIE"; + break; + } + if (nCode >= 4492 && nCode <= 4507) + { + strValue = "TING"; + break; + } + if (nCode >= 4508 && nCode <= 4520) + { + strValue = "TONG"; + break; + } + if (nCode >= 4521 && nCode <= 4524) + { + strValue = "TOU"; + break; + } + if (nCode >= 4525 && nCode <= 4535) + { + strValue = "TU"; + break; + } + if (nCode >= 4536 && nCode <= 4537) + { + strValue = "TUAN"; + break; + } + if (nCode >= 4538 && nCode <= 4543) + { + strValue = "TUI"; + break; + } + if (nCode >= 4544 && nCode <= 4546) + { + strValue = "TUN"; + break; + } + if (nCode >= 4547 && nCode <= 4557) + { + strValue = "TUO"; + break; + } + if (nCode >= 4558 && nCode <= 4564) + { + strValue = "WA"; + break; + } + if (nCode >= 4565 && nCode <= 4566) + { + strValue = "WAI"; + break; + } + if (nCode >= 4567 && nCode <= 4583) + { + strValue = "WAN"; + break; + } + if (nCode >= 4584 && nCode <= 4593) + { + strValue = "WANG"; + break; + } + if (nCode >= 4594 && nCode <= 4632) + { + strValue = "WEI"; + break; + } + if (nCode >= 4633 && nCode <= 4642) + { + strValue = "WEN"; + break; + } + if (nCode >= 4643 && nCode <= 4645) + { + strValue = "WENG"; + break; + } + if (nCode >= 4646 && nCode <= 4654) + { + strValue = "WO"; + break; + } + if (nCode >= 4655 && nCode <= 4683) + { + strValue = "WU"; + break; + } + if (nCode >= 4684 && nCode <= 4724) + { + strValue = "XI"; + break; + } + if (nCode >= 4725 && nCode <= 4737) + { + strValue = "XIA"; + break; + } + if (nCode >= 4738 && nCode <= 4763) + { + strValue = "XIAN"; + break; + } + if (nCode >= 4764 && nCode <= 4783) + { + strValue = "XIANG"; + break; + } + if (nCode >= 4784 && nCode <= 4807) + { + strValue = "XIAO"; + break; + } + if (nCode >= 4809 && nCode <= 4828) + { + strValue = "XIE"; + break; + } + if (nCode >= 4829 && nCode <= 4838) + { + strValue = "XIN"; + break; + } + if (nCode >= 4839 && nCode <= 4853) + { + strValue = "XING"; + break; + } + if (nCode >= 4854 && nCode <= 4860) + { + strValue = "XIONG"; + break; + } + if (nCode >= 4861 && nCode <= 4869) + { + strValue = "XIU"; + break; + } + if (nCode >= 4870 && nCode <= 4888) + { + strValue = "XU"; + break; + } + if (nCode >= 4889 && nCode <= 4904) + { + strValue = "XUAN"; + break; + } + if (nCode >= 4905 && nCode <= 4910) + { + strValue = "XUE"; + break; + } + if (nCode >= 4911 && nCode <= 4924) + { + strValue = "XUN"; + break; + } + if (nCode >= 4925 && nCode <= 4940) + { + strValue = "YA"; + break; + } + if (nCode >= 4941 && nCode <= 4973) + { + strValue = "YAN"; + break; + } + if (nCode >= 4974 && nCode <= 4990) + { + strValue = "YANG"; + break; + } + if (nCode >= 4991 && nCode <= 5011) + { + strValue = "YAO"; + break; + } + if (nCode >= 5012 && nCode <= 5026) + { + strValue = "YE"; + break; + } + if (nCode >= 5027 && nCode <= 5079) + { + strValue = "YI"; + break; + } + if (nCode >= 5080 && nCode <= 5101) + { + strValue = "YIN"; + break; + } + if (nCode >= 5102 && nCode <= 5119) + { + strValue = "YING"; + break; + } + if (nCode == 5120) + { + strValue = "YO"; + break; + } + if (nCode >= 5121 && nCode <= 5135) + { + strValue = "YONG"; + break; + } + if (nCode >= 5136 && nCode <= 5155) + { + strValue = "YOU"; + break; + } + if (nCode >= 5156 && nCode <= 5206) + { + strValue = "YU"; + break; + } + if (nCode >= 5207 && nCode <= 5226) + { + strValue = "YUAN"; + break; + } + if (nCode >= 5227 && nCode <= 5236) + { + strValue = "YUE"; + break; + } + if (nCode >= 5237 && nCode <= 5248) + { + strValue = "YUN"; + break; + } + if (nCode >= 5249 && nCode <= 5251) + { + strValue = "ZA"; + break; + } + if (nCode >= 5252 && nCode <= 5258) + { + strValue = "ZAI"; + break; + } + if (nCode >= 5259 && nCode <= 5262) + { + strValue = "ZAN"; + break; + } + if (nCode >= 5263 && nCode <= 5265) + { + strValue = "ZANG"; + break; + } + if (nCode >= 5266 && nCode <= 5279) + { + strValue = "ZAO"; + break; + } + if (nCode >= 5280 && nCode <= 5283) + { + strValue = "ZE"; + break; + } + if (nCode == 5284) + { + strValue = "ZEI"; + break; + } + if (nCode == 5285) + { + strValue = "ZEN"; + break; + } + if (nCode >= 5286 && nCode <= 5289) + { + strValue = "ZENG"; + break; + } + if (nCode >= 5290 && nCode <= 5309) + { + strValue = "ZHA"; + break; + } + if (nCode >= 5310 && nCode <= 5315) + { + strValue = "ZHAI"; + break; + } + if (nCode >= 5316 && nCode <= 5332) + { + strValue = "ZHAN"; + break; + } + if (nCode >= 5333 && nCode <= 5347) + { + strValue = "ZHANG"; + break; + } + if (nCode >= 5348 && nCode <= 5357) + { + strValue = "ZHAO"; + break; + } + if (nCode >= 5358 && nCode <= 5367) + { + strValue = "ZHE"; + break; + } + if (nCode >= 5368 && nCode <= 5383) + { + strValue = "ZHEN"; + break; + } + if (nCode >= 5384 && nCode <= 5404) + { + strValue = "ZHENG"; + break; + } + if (nCode >= 5405 && nCode <= 5447) + { + strValue = "ZHI"; + break; + } + if (nCode >= 5448 && nCode <= 5458) + { + strValue = "ZHONG"; + break; + } + if (nCode >= 5459 && nCode <= 5472) + { + strValue = "ZHOU"; + break; + } + if (nCode >= 5473 && nCode <= 5504) + { + strValue = "ZHU"; + break; + } + if (nCode >= 5505 && nCode <= 5506) + { + strValue = "ZHUA"; + break; + } + if (nCode == 5507) + { + strValue = "ZHUAI"; + break; + } + if (nCode >= 5508 && nCode <= 5513) + { + strValue = "ZHUAN"; + break; + } + if (nCode >= 5514 && nCode <= 5520) + { + strValue = "ZHUANG"; + break; + } + if (nCode >= 5521 && nCode <= 5526) + { + strValue = "ZHUI"; + break; + } + if (nCode >= 5527 && nCode <= 5528) + { + strValue = "ZHUN"; + break; + } + if (nCode >= 5529 && nCode <= 5539) + { + strValue = "ZHUO"; + break; + } + if (nCode >= 5540 && nCode <= 5554) + { + strValue = "ZI"; + break; + } + if (nCode >= 5555 && nCode <= 5561) + { + strValue = "ZONG"; + break; + } + if (nCode >= 5562 && nCode <= 5565) + { + strValue = "ZOU"; + break; + } + if (nCode >= 5566 && nCode <= 5573) + { + strValue = "ZU"; + break; + } + if (nCode >= 5574 && nCode <= 5575) + { + strValue = "ZUAN"; + break; + } + if (nCode >= 5576 && nCode <= 5579) + { + strValue = "ZUI"; + break; + } + if (nCode >= 5580 && nCode <= 5581) + { + strValue = "ZUN"; + break; + } + if (nCode >= 5582 && nCode <= 5589) + { + strValue = "ZUO"; + break; + } + } + if (strValue == "") strValue = "?"; + return strValue; +} \ No newline at end of file diff --git "a/\344\273\216dll\345\257\274\345\207\272lib.txt" "b/\344\273\216dll\345\257\274\345\207\272lib.txt" new file mode 100644 index 0000000..46e32d2 --- /dev/null +++ "b/\344\273\216dll\345\257\274\345\207\272lib.txt" @@ -0,0 +1,94 @@ +从dll导出lib +标签: dlllibrary工具file汇编date +2010-03-18 22:30 18103人阅读 评论(30) 收藏 举报 + 分类: C/C++(15) +版权声明:本文为博主原创文章,未经博主允许不得转载。 + +版权声明 + +本文为原创作品,请尊重作者的劳动成果。转载必须保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。 + + + + + +一、使用VC++的工具DUMPBIN将DLL中的导出函数表导出到一定义(.DEF)文件 +EXAMPLE: + +DUMPBIN VideoDeCoder.dll /EXPROTS /OUT:VideoDeCoder.def + 二、将导出的.DEF文件整理为一符合.DEF个数的函数导出文件 +EXAMPLE:VideoDeCoder.DEF 文件内容如下Dump of file VideoDeCoder.dll + + File Type: DLL + + Section contains the following exports for VideoDeCoder.dll + + 0 characteristics + 3D49E48F time date stamp Fri Aug 02 09:46:55 2002 + 0.00 version + 1 ordinal base + 11 number of functions + 11 number of names + + ordinal hint RVA name + + 1 0 00010F60 _TM_ClearDecoderBuff@4 + 2 1 00010E80 _TM_CloseDecoder@4 + 3 2 00010F00 _TM_DecodePicture@4 + 4 3 00010ED0 _TM_DecodePictureHeader@4 + 5 4 00010FD0 _TM_GetFileEnd@4 + 6 5 00011030 _TM_GetUValue@4 + 7 6 00011060 _TM_GetVValue@4 + 8 7 00011000 _TM_GetYValue@4 + 9 8 00010E10 _TM_OpenDecoder@8 + 10 9 00010F30 _TM_ReturnType@4 + 11 A 00010F90 _TM_SetFileEnd@8 + + Summary + + 2000 .data + 1000 .rdata + 1000 .reloc + 15000 .text +按照以下方法整理: +1)添加LIB说明 LIBRARY "VideoDeCoder" ;"xx"为DLL名称 +DESCRIPTION "VideoDeCoder library" +2)去掉导出函数说明端以外的内容,在LIB说明下添加 "EXPROTS" 说明导出函数 LIBRARY "VideoDeCoder" +DESCRIPTION "VideoDeCoder library" + +EXPORTS + ordinal hint RVA name + + 1 0 00010F60 _TM_ClearDecoderBuff@4 + 2 1 00010E80 _TM_CloseDecoder@4 + 3 2 00010F00 _TM_DecodePicture@ + 4 3 00010ED0 _TM_DecodePictureH + 5 4 00010FD0 _TM_GetFileEnd@4 + 6 5 00011030 _TM_GetUValue@4 + 7 6 00011060 _TM_GetVValue@4 + 8 7 00011000 _TM_GetYValue@4 + 9 8 00010E10 _TM_OpenDecoder@8 + 10 9 00010F30 _TM_ReturnType@4 + 11 A 00010F90 _TM_SetFileEnd@8 +3)将所有的函数放至行首,去掉 "hint" 和 "RVA" 数据,留下函数的序号 "ordinal" ,在序号前加上 "@" 符号 形成 "_导出函数名@参数字节和 @序号" 此种格式(__stdcall 方式调用导出的函数符号是 "函数名称@参数字节和"). 最后形成.DEF文件如下: LIBRARY "VideoDeCoder" + DESCRIPTION "VideoDeCoder library" + + EXPORTS + + TM_ClearDecoderBuff@4 @1 + TM_CloseDecoder@4 @2 + TM_DecodePicture@4 @3 + TM_DecodePictureHeader@4 @4 + TM_GetFileEnd@4 @5 + TM_GetUValue@4 @6 + TM_GetVValue@4 @7 + TM_GetYValue@4 @8 + TM_OpenDecoder@8 @9 + TM_ReturnType@4 @10 + TM_SetFileEnd@8 @11 + 三、使用VC++的LIB工具,带/DEF:(.def文件名) /MACHINE:IX86(80X86机器),就输出符合VC++格式的的LIB文件了. +EXAMPLE:LIB /DEF:VideoDeCoder.def /MACHINE:IX86 + 四、接时带上LIB文件链接;注意的是当有些动态库DUMPBIN的只有函数名,无"@nn"的参数格式,如C++Builder写的DLL,输出就只有函数名符号,链接时就会报错: error LNK2002:unresolved external symbol "functionname@nn" 提示程序中引入的函数符号无法识别,这时只要将DEF文件中相应的函数名称改为functionname@nn方式,重新建立 LIB,重新链接即可. + +最后还有一句,要自动生成.h文件好象是不行的.因为dll里没有保存函数原型,需要反汇编并分析代码才知道每个函数的参数情况. + diff --git "a/\345\234\250cmd\344\270\213\347\224\250cl\345\221\275\344\273\244\347\274\226\350\257\221\350\277\220\350\241\214CC++\346\272\220\346\226\207\344\273\266.txt" "b/\345\234\250cmd\344\270\213\347\224\250cl\345\221\275\344\273\244\347\274\226\350\257\221\350\277\220\350\241\214CC++\346\272\220\346\226\207\344\273\266.txt" new file mode 100644 index 0000000..646b091 --- /dev/null +++ "b/\345\234\250cmd\344\270\213\347\224\250cl\345\221\275\344\273\244\347\274\226\350\257\221\350\277\220\350\241\214CC++\346\272\220\346\226\207\344\273\266.txt" @@ -0,0 +1,235 @@ +在cmd下用cl命令编译运行C/C++源文件 +分类:2.C/C++ + + (1971) (0) 举报 收藏 + +一直用java来写程序,java配置好jre路径之后,在cmd下编译运行,很方便。 + +刚好要给一个舍友改下C程序,想到可不可以像java一样在环境变量里配置好C的编译路径呢? + +于是上网搜了一下,得到如下结果: + +一、如果装有VC,那就简单了,因为VC带有C的编译器,可以将此路径设置进环境变量。 + +Windows系统下编译连接源代码方法: +cl -GX test.c +-GX: 启动同步异常处理 +上面的命令会产生可执行程序:test.exe +在命令行中直接输入:test.exe 就可运行该程序 + +Tips: +一、cmd中键入cl提示不认识cl命令,则由于无法找到cl.exe程序。解决方法如下: +添加系统变量(Path),这样:我的电脑->属性->高级->环境变量->系统变量,在path中添加 +C:/Program Files/Microsoft Visual Studio 9.0/VC/bin;。 +注意: +1、结尾最后用“;”隔开! +2、如果你的Microsoft Visual Studio 低于9.0版本或高于9.0版需要修改上面的路径名称。 + +二、cmd中键入cl执行编译时会出现mspdb80.dll无法找到的情况,是因为VC/Bin/下没有 “msobj80.dll, +mspdb80.dll,mspdbcore.dll,mspdbsrv.exe”这四个文件,解决的方法: +1>直接从Common7/IDE/下复制这四个文件到VC/Bin/下即可解决 +2>添加系统变量(Path),这样:我的电脑->属性->高级->环境变量->系统变量,在path中添加 C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;,注意结尾最后用“;”隔开! +这样在用cl编译就不会出现mspdb80.dll文件找不到的错误了。 + +三、如果你在编译过程中,出现一下错误: +1、fatal error C1034: stdio.h: no include path set +2、fatal error LNK1104: cannot open file "kernel32.lib +请在我的电脑->属性->高级->环境变量->系统变量中新建系统变量LIB、INCLUDE并设置它们的值为: +(LIB)C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib;C:/Program Files/Microsoft SDKs/Windows/v5.0/Lib;C:/Program Files/Microsoft Visual Studio 9.0/VC/lib +(INCLUDE)C:/Program Files/Microsoft Visual Studio 9.0/VC/include + +Linux系统下编译连接源代码的方法: +gcc -g -c test.c -o test 只生成目标文件(.obj文件),没有生成可执行文件(也就是说test是.obj文件) +gcc -g test.c -o test 生成可执行文件(可以通过./test运行程序) +-g:生成调试信息。GNU 调试器可利用该信息。 +-c:只编译并生成目标文件。(没有中间文件生成和可执行文件,如列表文件、可执行文件) +-o:设置生成的可执行程序的名字为test +上面的命令会产生可执行程序:test +在Terminal中输入:./test 就可以运行该程序了。 + +操作步骤如下: + +1.在命令行下,先运行vcvars32.bat(此文件在VC安装目录/Bin文件夹里,其中设置了环境变量和路径等信息)。或者,手动修改环境变量: + +path=你安装VS的路径/VC98/Bin + +lib=你安装VS的路径/VC98/lib;你安装VS的路径/VC98/MFC/lib + +include=你安装VS的路径/VC98/include;你安装VS的路径/VC98/MFC/include;你安装VS的路径/VC98/ATL/lib + +2.然后直接用CL编译器编译C++程序(如:CL /GX /MT zx.cpp)。 + +CL经常使用的选项为: + + 多线程dll(/MD)-动态链接,不包含运行时库文件 + + 多线程(/MT)-静态链接,包含运行时库文件 + +附:CL 参数,即编译选项如下: + +-优化- + +/O1 最小化空间 /Op[-] 改善浮点数一致性 +/O2 最大化速度 /Os 优选代码空间 +/Oa 假设没有别名 /Ot 优选代码速度 +/Ob 内联展开(默认 n=0) /Ow 假设交叉函数别名 +/Od 禁用优化(默认值) /Ox 最大化选项。(/Ogityb2 /Gs) +/Og 启用全局优化 /Oy[-] 启用框架指针省略 +/Oi 启用内部函数 + +-代码生成- + +/G3 为 80386 进行优化 /Gh 启用 _penter 函数调用 +/G4 为 80486 进行优化 /GH 启用 _pexit 函数调用 +/G5 为 Pentium 进行优化 /GR[-] 启用 C++ RTTI +/G6 对 PPro、P-II、P-III 进行优化 /GX[-] 启用 C++ EH (与 /EHsc 相同) +/G7 对 Pentium 4 或 Athlon 进行优化 /EHs 启用 C++ EH (没有 SEH 异常) +/GB 为混合模型进行优化(默认) /EHa 启用 C++ EH(w/ SEH 异常) +/Gd __cdecl 调用约定 /EHc extern "C" 默认为 nothrow +/Gr __fastcall 调用约定 /GT 生成纤维安全 TLS 访问 +/Gz __stdcall 调用约定 /Gm[-] 启用最小重新生成 +/GA 为 Windows 应用程序进行优化 /GL[-] 启用链接时代码生成 +/Gf 启用字符串池 /QIfdiv[-] 启用 Pentium FDIV 修复 +/GF 启用只读字符串池 /QI0f[-] 启用 Pentium 0x0f 修复 +/Gy 分隔链接器函数 /QIfist[-] 使用 FIST 而不是 ftol() +/GZ 启用堆栈检查(/RTCs) /RTC1 启用快速检查(/RTCsu) +/Ge 对所有函数强制堆栈检查 /RTCc 转换为较小的类型检查 +/Gs[num] 控制堆栈检查调用 /RTCs 堆栈帧运行时检查 +/GS 启用安全检查 /RTCu 未初始化的本地用法检查 +/clr[:noAssembly] 为公共语言运行库编译 + noAssembly - 不产生程序集 +/arch: CPU 结构的最低要求,以下内容之一: + SSE - 启用支持 SSE 的 CPU 可用的指令 + SSE2 - 启用支持 SSE2 的 CPU 可用的指令 + + +/Fa[file] 命名程序集列表文件 /Fo 命名对象文件 +/FA[sc] 配置程序集列表 /Fp 命名预编译头文件 +/Fd[file] 命名 .PDB 文件 /Fr[file] 命名源浏览器文件 +/Fe 命名可执行文件 /FR[file] 命名扩展 .SBR 文件 +/Fm[file] 命名映射文件 + +-预处理器- + +/AI 添加到程序集搜索路径 /Fx 将插入的代码合并到文件 +/FU 强制使用程序集/模块 /FI 命名强制包含文件 +/C 不抽出注释 /U 移除预定义宏 +/D{=|#} 定义宏 /u 移除所有预定义宏 +/E 预处理到 stdout /I 添加到包含搜索路径 +/EP 预处理到 stdout,没有 #line /X 忽略“标准位置” +/P 预处理到文件 + +-语言- + +/Zi 启用调试信息 /Ze 启用扩展(默认) +/ZI 启用“编辑并继续”调试信息 /Zl 省略 .OBJ 中的默认库名 +/Z7 启用旧式调试信息 /Zg 生成函数原型 +/Zd 仅有行号调试信息 /Zs 只进行语法检查 +/Zp[n] 在 n 字节边界上包装结构 /vd{0|1} 禁用/启用 vtordisp +/Za 禁用扩展(暗指 /Op) /vm 指向成员的指针类型 +/Zc:arg1[,arg2] C++ 语言一致性,这里的参数可以是: + forScope - 对范围规则强制使用标准 C++ + wchar_t - wchar_t 是本机类型,不是 typedef + +- 杂项 - + +@ 选项响应文件 /wo 发出一次警告 n +/?, /help 打印此帮助消息 /w 为 n 设置警告等级 1-4 +/c 只编译,不链接 /W 设置警告等级(默认 n=1) +/H 最大外部名称长度 /Wall 启用所有警告 +/J 默认 char 类型是 unsigned /Wp64 启用 64 位端口定位警告 +/nologo 取消显示版权消息 /WX 将警告视为错误 +/showIncludes 显示包含文件名 /WL 启用单行诊断 +/Tc 将文件编译为 .c /Yc[file] 创建 .PCH 文件 +/Tp 将文件编译为 .cpp /Yd 将调试信息放在每个 .OBJ 中 +/TC 将所有文件编译为 .c /Yl[sym] 为调试库插入 .PCH 引用 +/TP 将所有文件编译为 .cpp /Yu[file] 使用 .PCH 文件 +/V 设置版本字符串 /YX[file] 自动 .PCH +/w 禁用所有警告 /Y- 禁用所有 PCH 选项 +/wd 禁用警告 n /Zm 最大内存分配(默认为 %) +/we 将警告 n 视为错误 + +-链接- + +/MD 与 MSVCRT.LIB 链接 /MDd 与 MSVCRTD.LIB 调试库链接 +/ML 与 LIBC.LIB 链接 /MLd 与 LIBCD.LIB 调试库链接 +/MT 与 LIBCMT.LIB 链接 /MTd 与 LIBCMTD.LIB 调试库链接 +/LD 创建 .DLL /F 设置堆栈大小 +/LDd 创建 .DLL 调试库 /link [链接器选项和库] + + +关于链接时参数的说明: + +VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)、单线程(/ML)、单线程调试(/MLd)。 + +Reusable Library + +Switch + +Library + +Macro(s) Defined + +Single Threaded + +/ML + +LIBC + +(none) + +Static MultiThread + +/MT + +LIBCMT + +_MT + +Dynamic Link (DLL) + +/MD + +MSVCRT + +_MT and _DLL + +Debug Single Threaded + +/MLd + +LIBCD + +_DEBUG + +Debug Static MultiThread + +/MTd + +LIBCMTD + +_DEBUG and _MT + +Debug Dynamic Link (DLL) + +/MDd + +MSVCRTD + +_DEBUG, _MT, and _DLL + + + + 其中以小写“d”结尾的选项表示的DEBUG版本的,没有“d”的为RELEASE版本。大型项目中必须要求所有组件和第三方库的运行时库是统一的,否则将会出现LNK2005井喷。 + + 单线程运行时库选项/ML和/MLd在VS2003以后就被废了。 + + /MT和/MTd表示采用多线程CRT库的静态lib版本。该选项会在编译时将运行时库以静态lib的形式完全嵌入。该选项生成的可执行文件运行时不需要运行时库dll的参加,会获得轻微的性能提升,但最终生成的二进制代码因链入庞大的运行时库实现而变得非常臃肿。当某项目以静态链接库的形式嵌入到多个项目,则可能造成运行时库的内存管理有多份,最终将导致致命的“Invalid Address specified to RtlValidateHeap”问题。另外托管C++和CLI中不再支持/MT和/MTd选项。 + + /MD和/MDd表示采用多线程CRT库的动态dll版本,会使应用程序使用运行时库特定版本的多线程DLL。链接时将按照传统VC链接dll的方式将运行时库MSVCRxx.DLL的导入库MSVCRT.lib链接,在运行时要求安装了相应版本的VC运行时库可再发行组件包(当然把这些运行时库dll放在应用程序目录下也是可以的)。 因/MD和/MDd方式不会将运行时库链接到可执行文件内部,可有效减少可执行文件尺寸。当多项目以MD方式运作时,其内部会采用同一个堆,内存管理将被简化,跨模块内存管理问题也能得到缓解。 + + 结论:/MD和/MDd将是潮流所趋,/ML和/MLd方式请及时放弃,/MT和/MTd在非必要时最好也不要采用了。 + + + +二、单独下载gcc程序,同样的设置环境变量就可以了。 \ No newline at end of file diff --git "a/\345\234\250vc\344\270\255\344\275\277\347\224\250mingw\347\274\226\350\257\221\345\207\272\346\235\245\347\232\204\345\212\250\346\200\201\345\272\223\345\222\214\351\235\231\346\200\201\345\272\223.txt" "b/\345\234\250vc\344\270\255\344\275\277\347\224\250mingw\347\274\226\350\257\221\345\207\272\346\235\245\347\232\204\345\212\250\346\200\201\345\272\223\345\222\214\351\235\231\346\200\201\345\272\223.txt" new file mode 100644 index 0000000..f4f0118 --- /dev/null +++ "b/\345\234\250vc\344\270\255\344\275\277\347\224\250mingw\347\274\226\350\257\221\345\207\272\346\235\245\347\232\204\345\212\250\346\200\201\345\272\223\345\222\214\351\235\231\346\200\201\345\272\223.txt" @@ -0,0 +1,30 @@ +如何在vc中使用mingw编译出来的动态库和静态库 +2014-02-12 16:06 5209人阅读 评论(0) 收藏 举报 +版权声明:本文为博主原创文章,未经博主允许不得转载。 + +mingw编译出来的静态库后缀名为.a,编译出来的动态库的导入库后缀名为.dll.a,而在windows下后缀名为.lib的库可能是静态库也可能是动态库的导入库。 + +mingw编译出来的动态库的导入库可以直接在vc中直接使用,例如 + +#pragma comment(lib, "libx264.dll.a") + +这样你就不需要生成一个.lib后缀的动态库的导入库了,网上也有如何从.dll生成.lib的方法。 + +如果链接了动态库的导入库libpthread.dll.a,你发布的应用程序就要带上pthread的dll。 +使用静态库的好处是发布的应用程序组件模块里不需要带上相关的dll,如果要使用mingw编译出来的静态库,可以如下: + +#pragma comment(lib, "libx264.a") + +但是仅仅链接这么一个静态库是不够的,你还需要链接 + +libgcc.a + +libmingwex.a + +你可能还需要链接libmsvcrt.a + +否则会报一堆错误:error LNK2001: 无法解析的外部符号 + +上面的这些库在C:\MinGW\lib目录或子目录下面可以找到。 + +链接这些库的原因是mingw使用的gcc编译器和vc编译器之间存在差异 \ No newline at end of file