我正在運行tcl/tk(8.5)與外部c庫連接到一個d2xx USB庫。我正在運行Windows 8並嘗試使用VS 2012 Native Tools
命令提示編譯庫。當我啓動命令提示符我PWD是:我該如何編譯Windows XP與Visual Studio 2012從命令提示符
\Program Files (x86)\Microsoft Visual Studio 11.0\VC
C庫(tclftd2xx.c)附帶爲正確設置環境鏈接到所需要的TCL庫,並與D2XX頭虛擬演播室NMAKE文件。
在VS命令窗口,我的CD含有makefile.vc和類型的目錄:
NMAKE .....
,我得到我的tclftd2xx.dll。
tclftd2xx.dll calls msvcr110.dll
。當它們都正確放置在/ Tcl/lib中時,它們在我的Windows 8系統以及Vista和Windows 7上運行良好。
但是,當安裝在Windows XP上時,Windows無法加載tclftd2xx.dll。
我做了一些搜索,發現我必須爲v110_xp工具集配置VS2012。鏈接(http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx)有這樣一個字條:
的Visual Studio 2012級的解決方案,並已切換到 的v110_xp工具集可以使用的MSBuild 或devenv的,無需額外步驟的命令行來構建項目。
但是,如果您希望直接使用CL和Link,則需要其他步驟 。請注意,通過創建批次 腳本可以自動執行以下步驟。
這一點我在這裏做:
REM set include and path variables
set INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%
set PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%
REM When targeting X86, set the lib path as follows:
set LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%
REM set the compiler options
set CL=/D_USING_V110_SDK71_;%CL%
REM When targeting x64, set the lib path as follows:
REM set LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib\x64;%LIB%
REM Specify the correct subsystem and subsystem version for the linker based on the type of
REM application you are building. Applications targeting the x86 version of Windows XP must specify
REM subsystem version 5.01, and applications targeting x64 must specify version 5.02.
REM For x86 console applications:
set LINK=/SUBSYSTEM:CONSOLE,5.01 %LINK%
REM For x64 console applications:
REM set LINK=/SUBSYSTEM:CONSOLE,5.02 %LINK%
要構建XP版本,從VS命令行我 1)運行.bat文件 2)NMAKE .....
我得到一個與windows 8的dll完全相同的.dll文件。
所以我有兩個問題:
- 有一些其他神奇的配置腳本或環境變量我要運行,以使另外的v110_xp工具集來執行
.bat file
,或不執行.bat文件做完整的配置? - 是否有某種方法可以確認.dll確實是針對XP系統的目標,而不是嘗試將其加載到XP系統上?
爲什麼不使用VS構建系統而不是使用古老的nmake? – 2013-04-18 06:31:49
makefile.vc並不那麼簡單。例如,它與TCL安裝密切相關(它表示它實際上源於此)。我不知道如何將所有這些東西導入到VS構建中。 – user1967890 2013-04-18 06:43:40
我還在尋找一種使用VS2012的nmake編譯WinXP的優雅方法。我非常生氣,因爲這讓MS變得如此複雜。如果vcvarsall.bat允許一個參數指定目標,那本來就很容易。而且,他們提供的步驟甚至不能可靠地工作。我必須自己解決%ProgramFiles%與%ProgramFiles(x86)%問題。 – Sven 2013-08-17 16:27:27