Winapi LNK1107:无效或损坏的文件-哪个文件损坏?

Winapi LNK1107:无效或损坏的文件-哪个文件损坏?,winapi,dll,command-line,windows-phone,Winapi,Dll,Command Line,Windows Phone,我正在开发Crypto++库的Windows Phone 8端口。我正在尝试创建一个DLL。我已经遭受LNK1107:无效或损坏的文件错误太久了 我已经使用DllMain将DLL构建简化为一个名为DLL-wp8.obj的单一对象文件。当我尝试链接它时,我得到: "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\WPSDK\WP80\bin\x 86_arm\cl.exe" /nologo /D NDEBUG /W3 /

我正在开发Crypto++库的Windows Phone 8端口。我正在尝试创建一个DLL。我已经遭受LNK1107:无效或损坏的文件错误太久了

我已经使用DllMain将DLL构建简化为一个名为DLL-wp8.obj的单一对象文件。当我尝试链接它时,我得到:

        "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\WPSDK\WP80\bin\x
86_arm\cl.exe" /nologo /D NDEBUG /W3 /Os /Oy- /D WINAPI_FAMILY=WINAPI_FAMILY_PHO
NE_APP  /AI "C:\Program Files (x86)\Windows Phone Kits\8.0\Windows Metadata" /FI
 SDKDDKVer.h /FI winapifamily.h  /WX- /GL /D _USRDLL /D _WINDLL /Gm- /EHsc /MD /
GS /fp:precise  /D CRYPTOPP_EXPORTS /D CRYPTOPP_DISABLE_ASM /D CRYPTOPP_DISABLE_
SSE2  /D CRYPTOPP_DISABLE_SSE3 -c dll-wp8.cpp
dll-wp8.cpp
        "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\WPSDK\WP80\bin\x
86_arm\link.exe" /nologo /release /manifest:no /subsystem:console /LTCG /TLBID:1
 /WINMD:NO  /DYNAMICBASE /NXCOMPAT /MACHINE:ARM /DLL /verbose WindowsPhoneCore.l
ib RuntimeObject.lib PhoneAppModelHost.lib /implib:cryptlib.lib /out:cryptlib.dl
l dll-wp8.obj

Starting pass 1
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\WPSDK\WP80\bin\x86_arm\li
nk.exe : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2B8
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0
\VC\WPSDK\WP80\bin\x86_arm\link.exe"' : return code '0x453'
Stop.
命令行与Visual Studio 2012/Windows Phone项目创建的内容一致。类似的空项目在VisualStudio下链接良好。编辑:VisualStudio使用响应文件,而不是直接驱动编译器。这可能与:

所有的文件似乎都找到了,它们都是ARM。这些文件是WindowsPhoneCore.lib RuntimeObject.lib PhoneAppModelHost.lib和dll-wp8.obj:

从编译开关和转储符号中删除/GL将显示DllMain已导出:

C:\Users\Jeffrey\cryptopp>dumpbin /symbols dll-wp8.obj | findstr DllMain
2A4 00000000 SECTE1 notype ()    External     | DllMain
2A5 00000000 SECTE1 notype       Label        | $LN5@DllMain
2A8 00000000 SECTE2 notype       Static       | $pdata1$DllMain
2AD 00000000 SECTE3 notype       Static       | $unwind2$DllMain

如何确定哪些文件无效或损坏?

您说您检查了所有文件,但没有提到检查cryptlib.lib,并且它也没有出现在您的屏幕截图中。它是手臂型的吗?是的,它是手臂型的。cryptlib.dll是dll,cryptlib.lib是导入库。他们是我正在努力建立的。我确实尝试过在没有/implib:cryptlib.lib的情况下构建,但得到了相同的结果。如果省略,则使用默认导入库名称的状态。抱歉,当然是。想到开源的cryptlib项目,我脑子里出了个屁。@arx-没问题。我偶尔也用古特曼的密码库做实验。这是一个写得很好的图书馆。
C:\Users\Jeffrey\cryptopp>dumpbin /symbols dll-wp8.obj | findstr DllMain
2A4 00000000 SECTE1 notype ()    External     | DllMain
2A5 00000000 SECTE1 notype       Label        | $LN5@DllMain
2A8 00000000 SECTE2 notype       Static       | $pdata1$DllMain
2AD 00000000 SECTE3 notype       Static       | $unwind2$DllMain