編輯
自己實現的第乙個linux中dll的呼叫
1. 編譯dll:
g++ -shared -lc -o strcase.dll lowcase.cpp uppercase.cpp
如果要加入除錯資訊:(加上 -g選項)
g++ -shared -lc -o strcase.dll lowcase.cpp uppercase.cpp -g
編譯c++ dll注意函式之前需要加上 extern "c",否則在dlsym函式呼叫的時候可能會找不到函式
2. 編譯exe:
g++ -ldl -o strcase.exe main.cpp
如果要加入除錯資訊:(加上 -g選項)
g++ -ldl -o strcase.exe main.cpp -g
3. gdb除錯
gdb strcase.exe
除錯時需要在編譯的時候加上(-g)選項
gdb命令:
b 設定斷點,例如:
b main #表示跳到main函式
b main.cpp: 56 #56表示行號
l 列印當前的執行**附近的10行
p 列印變數szmsg的值
p szmsg
n 執行下一行(單步執行, 類似vc中的f10)
s 進入函式(類似vc中的f10)
r 執行(類似vc中的f5)
//main.cpp
cpp**
"font-size: medium;">"color: #3366ff;">#include
#include
#include
using
namespace std;
#define true 1
#define false 0
typedef
intbool;
typedef
void (*pfun_string)(char* pszstr);
bool usedll(char* szmsg);
int main()
bool usedll(char* szmsg)
cout << "the origin string:"
<< szmsg << endl;
//open dll
hdll = dlopen("./strcase.dll", rtld_lazy);
szdllerr = dlerror();
if (szdllerr)
//find the function
pfunupper = (pfun_string)dlsym(hdll, "strupper");
szdllerr = dlerror();
if (szdllerr)
(*pfunupper)(szmsg);
cout << "after strupper string:"
<< szmsg << endl;
//call strlower
pfunlower = (pfun_string)dlsym(hdll, "strlower");
szdllerr = dlerror();
if (szdllerr)
(*pfunupper)(szmsg);
cout << "after strlower string:"
<< szmsg << endl;
//close handle
int nret = dlclose(hdll);
szdllerr = dlerror();
cout << "close dll info:"
<< szdllerr << endl;
}
//lowcase.cpp
cpp**
"font-size: medium;">"color: #3366ff;">#include
#include
#include
using
namespace std;
extern
"c"void strlower(char* pszstr)
int nlen = 0;
int i = 0;
nlen = strlen(pszstr);
for (i = 0; i < nlen; i++)
} }
//uppercase.cpp
cpp**
"font-size: medium;">"color: #3366ff;">#include
#include
#include
using
namespace std;
extern
"c"void strupper(char* pszstr)
int nlen = 0;
int i = 0;
nlen = strlen(pszstr);
for (i = 0; i < nlen; i++)
} }
自己的第乙個網頁
檔案是乙個儲存在輔助儲存器上的資料序列,可以包含任何資料內容。概念上,檔案是資料的集合和抽象。二進位制檔案直接由位元0和位元1組成,沒有統一字元編碼,檔案內部資料的組織格式與檔案用途有關。二進位制檔案和文字檔案最主要的區別在於是否有統一的字元編碼 無 件建立為文字檔案或者二進位制檔案,都可以用 文字...
自己的第乙個網頁
一 檔案讀寫的讀書筆記 二進位制檔案直接由位元0和位元1組成,沒有統一字元編碼,檔案內部資料的組織格式與檔案用途有關。二進位制檔案和文字檔案最主要的區別在於是否有統一的字元編碼 無 件建立為文字檔案或者二進位制檔案,都可以用 文字檔案方式 和 二進位制檔案方式 開啟,開啟後的操作不同。python對...
自己的第乙個網頁
檔案的使用包括 開啟,讀取,輸出 開啟模式說明r 唯讀模式 預設 檔案不存在則返回 filenotfounderror異常w 覆蓋寫模式,檔案不存在則建立,存在則覆蓋寫 x建立寫模式,檔案不存在則建立,存在則返回 fileexistserror異常a 追加寫模式,檔案不存在則建立,存在則追加寫 t文...