更改dll名稱

2021-07-11 20:04:50 字數 2345 閱讀 4547

本文**往事隨風的部落格

為了更改目標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...