编译生成DLL文件的方法:
方法一:
1.cl /c FasterString.cpp ------->FasterString.obj
2.lib /DEF FasterString.obj ------->FasterString.exp and FasterString.lib
3.link /dll FasterString.exp FasterString.obj------ >FasterString.dll
方法二:
1.cl /c FasterString.cpp ------->FasterString.obj
2.link /dll FasterString.obj ------->FasterString.exp and FasterString.lib and FasterString.dll
方法三:
1.cl /LD FasterString.cpp ------>FasterString.obj and FasterString.exp and FasterString.lib and FasterString.dll
生成测试程序:
cl /EHsc TestString.cpp FasterString.lib --->TestString.exe
以上三种方法生成的FasterString.lib是导入库文件,其中没有SourceCode,所以生成的程序(TestString.exe)运行时需要FasterString.dll文件的支持,如果没该dll文件,则系统加载该程序(TestString.exe)是出错,系统报错
创建标准库文件(静态库文件)的方法
1.cl /c FasterString.cpp ------->FasterString.obj
2.lib FasterString.obj --------> FasterString.lib
生成测试程序:
cl /EHsc TestString.cpp FasterString.lib --->TestString.exe
上面的方法将生成静态库文,其中含有SourceCode,所以和测试程序(TestString.exe)编译,链接后,程序可以直接运行,不需要任何依赖!
附一:
1 //FasterString.h 2 class __declspec(dllexport) FasterString 3 { 4 private: 5 char *m_psz; 6 public: 7 FasterString(const char *psz); 8 ~FasterString(); 9 10 int Length() const; 11 };
附二:
1 //FasterString.cpp 2 #include"FasterString.h" 3 #include<string.h> 4 5 FasterString::FasterString(const char *psz):m_psz(new char[strlen(psz) + 1]) 6 { 7 strcpy(m_psz, psz); 8 } 9 10 FasterString::~FasterString() 11 { 12 delete[] m_psz; 13 } 14 15 int FasterString::Length() const 16 { 17 return strlen(m_psz); 18 }
附三:
1 //TestString.cpp 2 #include<iostream> 3 #include"FasterString.h" 4 using namespace std; 5 6 int main() 7 { 8 char psz[] = "Hello, World!"; 9 10 FasterString fs(psz); 11 12 cout<<"char*: "<<psz<<" Lenght: "<<fs.Length()<<endl; 13 return 0; 14 }