本文**往事隨風的部落格
為了更改目標dll的名稱,按如下三步操作。
dumpbin videodecoder.dll /exports /out: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 10
00010f60 _tm_cleardecoderbuff@421
00010e80 _tm_closedecoder@432
00010f00 _tm_decodepicture@443
00010ed0 _tm_decodepictureheader@454
00010fd0 _tm_getfileend@465
00011030 _tm_getuvalue@476
00011060 _tm_getvvalue@487
00011000 _tm_getyvalue@498
00010e10 _tm_opendecoder@8109
00010f30 _tm_returntype@4
11 a 00010f90 _tm_setfileend@8
summary
2000
.data
1000
.rdata
1000
.reloc
15000
.text
按照以下方法整理:
1)新增lib說明 library 「xx」; 「xx」為dll名稱
description 「videodecoder library」
2)去掉匯出函式說明端以外的內容,在lib說明下新增 「exprots」 說明匯出函式 library 「videodecoder」
description 「videodecoder library」
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
lib /def
:videodecoder.def /machine
:ix86
注意:當有些動態庫dumpbin的只有函式名,無」@nn」的引數格式,如c++builder寫的dll,輸出只有函式名符號,鏈結時就會報錯:「 error lnk2002:unresolved external symbol 「functionname@nn」
解決方案:提示程式中引入的函式符號無法識別,這時只要將def檔案中相應的函式名稱改為functionname@nn方式,重新生成lib,再次鏈結即可。
Android更改工程名稱
對於已經建立的工程,如果發現原來的工程名不合適,此時若想徹底更改工程名,需要三個步驟 1.更改工程名 選中工程名,右鍵 refactor rename.2.更改src檔案下包名 選中包名,更改方式同步驟1.但此時需注意將彈出框中的所有選項均選中,其他項不用改動,直到finish。注意 包名只能小寫。...
Ubuntu下更改網絡卡名稱
這個方法用於解決ubuntu下更換網絡卡後,新網絡卡變更為eth1,並且源網絡卡的名稱eth0,無法給新網絡卡用的情況。也可以用於為網絡卡更名。網 卡mac位址改變之後,在linux中找到網絡卡,新的網絡卡會被識別為eth1或者更為靠後的網絡卡寫入到 etc udev rules.d 70 pers...
強名稱DLL註冊問題
乙個使用了強名稱簽名的dll需要安裝到gac中才可以使用,通常我們通過gacutil工具來安裝,但這樣有個問題,就是這個的執行必須是在command方式,另外,標準的framework的再發行包是不包括這個工具的,需要額外的安裝。我是想在我的程式中來通過呼叫某些 實現安裝過程,在.net中找到了sy...