2012-06-22 77 views
1

我正在爲NodeJS構建一個插件。在Windows 7下編譯的Dll在Windows XP中無法正常工作

在Windows 7中正常工作,但在Windows XP中不會加載,無論我做什麼都不會打開它。 ERROR: Unable to load shared library c:\tst\tst.node

我編譯從VS2010與下列選項DLL:

  • C/C++選擇採用

    /I"c:\tst\nodemodule\cvv8\include" /I"c:\tst\nodemodule\node-src\deps\uv\include" /I"c:\tst\nodemodule\node-src\deps\v8\include" /I"c:\tst\nodemodule\node-src\src" /I"c:\tst\nodemodule\node-src\deps\zlib" /I"c:\tst\nodemodule\node-src\deps\http_parser" /I"c:\tst\nodemodule\cvv8\include\cvv8" /Zi /nologo /W0 /WX- /O2 /Oi /Oy- /GL /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "TST_EXPORTS" /D "_WINDLL" /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fp"Release\tst.pch" /Fa"Release\" /Fo"Release\" /Fd"Release\vc100.pdb" /Gd /analyze- /errorReport:queue

  • 連接選擇採用

    /OUT:"c:\tst\tst.node" /INCREMENTAL:NO /NOLOGO /DLL "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST:NO /ManifestFile:"Release\tst.node.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /PDB:"c:\tst\tst.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /PGD:"c:\tst\tst.pgd" /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE

怎麼了?這是UTF-8相關嗎?

+5

Windows XP是否安裝了正確的運行時? –

+0

@SethCarnegie上帝之母! –

+0

您也可以嘗試靜態鏈接以儘可能避免運行時問題。 – Ioan

回答

3

診斷此類問題的最佳工具是dependency walker。 在dw中打開你的DLL,你會立即明白爲什麼它不會加載:最有可能有一些dll/libs缺少你的DLL依賴。

相關問題