1 我用cmake把void Myadd(){};這個函數定義封裝為dll或者lib 然后加到VS庫里運行2 直接在vs里定義void Myadd(){};然后直接運行我知道,即使直接定義運行也是會生成lib或者dll的吧?但是這倆速度有差別嗎? 差別大不大?我自己做的實驗,調用人家的dll的速度就是比我自己復制人家的代碼的速度要快。
2 回答

動漫人物
TA貢獻1815條經驗 獲得超10個贊
一般說來,如果同一段代碼,一個寫成DLL,一個作為函數直接定義,則DLL調用肯定要慢一些。原因如下:
一個程序如果要使用DLL中的函數,則必須經過,如下步驟:
1、將DLL文件裝入內存,win32的方法是 :LoadLibrary(...);
2、取得指定的函數的入口地址,方法好像是: GetProcessAddr(.....)
3、通過函數指針,調用函數。
而直接在程序中定義函數,則沒有前兩步,函數的入口地址在程序裝入時就確定了。
- 2 回答
- 0 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消