在Windows 7下编译的Dll在Windows XP中不起作用
Dll compiled under Windows 7 doesn't work in Windows XP
我正在为 NodeJS 构建一个插件。
在Windows 7中工作得很好。但是在Windows XP中,它不会加载,无论我做什么都不会打开它。 ERROR: Unable to load shared library c:tsttst.node
我正在使用以下选项从VS2010编译DLL:
-
C/C++ 选项
/I"c:tstnodemodulecvv8include" /I"c:tstnodemodulenode-srcdepsuvinclude" /I"c:tstnodemodulenode-srcdepsv8include" /I"c:tstnodemodulenode-srcsrc" /I"c:tstnodemodulenode-srcdepszlib" /I"c:tstnodemodulenode-srcdepshttp_parser" /I"c:tstnodemodulecvv8includecvv8" /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"Releasetst.pch" /Fa"Release" /Fo"Release" /Fd"Releasevc100.pdb" /Gd /analyze- /errorReport:queue
-
链接器选项
/OUT:"c:tsttst.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:"Releasetst.node.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /PDB:"c:tsttst.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /PGD:"c:tsttst.pgd" /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE
怎么了?这个 UTF-8 相关吗?
诊断此类问题的最佳工具是依赖步行者。在 dw 中打开你的 dll,你会立即看到为什么它无法加载:很可能有一些 dll/库缺少你的 dll 所依赖的。
在包含Windows标头(通常在stdafx.h中)之前,请尝试设置Windows版本宏,以确保您没有使用仅在XP之后可用的API。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx#setting_winver_or__win32_winnt
- Windows.h 输入在函数之外不起作用
- C++Windows API MOUSEEVENTF_XDOWN,MOUSEEVENTF_XUP不起作用
- boost zlib filter 在 Windows 中不起作用
- 在 Windows 上打印不起作用
- Makefile在Linux中工作,但在Windows下不起作用,在子目录中找不到文件
- QClipboard的信号选择已更改在Windows 7中不起作用
- 当我在Windows上运行它时,为什么我的Linux编译二进制不起作用
- 提升协程是否在 Windows x86_64 上不起作用
- 唯一的字符代码在 Linux 中运行时不起作用,但在 Windows (C++) 中很好
- 在 Windows 8 中编译的 DLL 在 Windows 7 中不起作用
- Visual C 2012 Express Compied Application在Windows XP上不起作用
- MinGW .h 编译文件不起作用:此文件的版本与您运行的 Windows 版本不兼容
- outputdebugstring,printf不起作用(Visual Studio 2012,Windows 8)
- getenv( "LINES" ) 在 Windows 上不起作用
- EDSDK消息循环在Windows 8.1下不起作用
- 注入dll在windows XP上不起作用
- MS Windows套接字示例对我不起作用
- 在Windows 7下编译的Dll在Windows XP中不起作用
- 在 Windows 7 上中止系统关闭不起作用
- perl 内联 cpp 在 Windows 32 位上不起作用