インポートライブラリは厄介です。。。
1>textsearch_ja.obj : error LNK2001: 外部シンボル "__imp_mecab_new" は未解決です。
結論:
x64 __imp_mecab_new
x86 __imp__mecab_new
ーーー
という訳で、ちょっと確かめてみます。
dumpbin /exports libmecab.dll | find /i "mecab_new"
97 60 00027540 mecab_new
98 61 0004F450 mecab_new2
dumpbin /exports libmecab.lib | find /i "mecab_new"
_mecab_new
_mecab_new2
DependencyWalkerで見ると、「mecab_new」
Cygwinで:
$ objdump.exe -t Program\ Files\ \(x86\)/MeCab/sdk/libmecab.lib | grep "mecab_new"
[ 4](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 __imp__mecab_new
[ 5](sec 3)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 _mecab_new
[ 4](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 __imp__mecab_new2
[ 5](sec 3)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 _mecab_new2
$ objdump.exe -p Program\ Files\ \(x86\)/MeCab/bin/libmecab.dll | grep "mecab_new"
[ 96] mecab_new
[ 97] mecab_new2
ーーー
という訳で、ちょっと作って確かめてみました。(後から注記:x86)
extern "C" __declspec(dllexport) int ExportIt() {
return 0;
}
dumpbin /exports OneDLL.dll | find "ExportIt"
1 0 00001000 ExportIt = _ExportIt
dumpbin /exports OneDLL.lib | find "ExportIt"
_ExportIt
DependencyWalkerで見ると、「ExportIt」
Cygwinで:
$ objdump.exe -t Proj/Solution1/release/OneDLL.lib | grep "ExportIt"
[ 4](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 __imp__ExportIt
[ 5](sec 3)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 _ExportIt
$ objdump.exe -p Proj/Solution1/release/OneDLL.dll | grep "ExportIt"
[ 0] ExportIt
ーーー
(後から注記:x64)
extern "C" __declspec(dllexport) int ExportIt() {
return 0;
}
dumpbin /exports OneDLL.dll | find "ExportIt"
1 0 00001000 ExportIt = ExportIt
dumpbin /exports OneDLL.lib | find "ExportIt"
ExportIt
DependencyWalkerで見ると、「ExportIt」
$ objdump.exe -p Proj/Solution1/x64/release/OneDLL.dll | grep "ExportIt"
objdump: Proj/Solution1/x64/release/OneDLL.dll: ファイル形式が認識できません
$ objdump.exe -t Proj/Solution1/x64/release/OneDLL.lib | grep "ExportIt"
objdump: OneDLL.dll: ファイル形式が認識できません
objdump: OneDLL.dll: ファイル形式が認識できません
objdump: OneDLL.dll: ファイル形式が認識できません
BFD: Proj/Solution1/x64/release/OneDLL.lib(OneDLL.dll): インポートライブラリ形式書庫のマシン型 (0x8664) は認識できますが扱えません
BFD: Proj/Solution1/x64/release/OneDLL.lib(OneDLL.dll): インポートライブラリ形式書庫のマシン型 (0x8664) は認識できますが扱えません
objdump: OneDLL.dll: ファイル形式が認識できません
ーーー
特に問題ないように思えます。。。
ところが、x64という可能性を考え、追試をするとビンゴ!
x64では、最初の _ 記号が取れているでは在りませんか。。。
0 件のコメント:
コメントを投稿