How can I build this project on windows? Do I use "nmake.exe"? I already took a look at "buildnotes" it says to run "make" but as far as I know theirs no make for windows.
The readme explains: you need to use GNU make, not nmake. If you download a source archive of GNU make, simply run the included .bat file in a Visual Studio command line environment to build it.
The buildnotes file is still being written; once i start writing the final documentation this will all be explained.
Oh okay. Have you considered using gyp?
GYP is intended to support large projects that need to be built on multiple platforms (e.g., Mac, Windows, Linux), and where it is important that the project can be built using the IDEs that are popular on each platform as if the project is a “native” one.
It can be used to generate XCode projects, Visual Studio projects, Ninja build files, and Makefiles. In each case GYP’s goal is to replicate as closely as possible the way one would set up a native build of the project using the IDE.
I've used gyp for some small cross-platform projects and it works perfectly. If you'd like I can make a pull request and add this in.
quick & dirty build on windows 7 64-bit:
set "path=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x64;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64;D:\MinGW64-4.8\bin"
make RELEASE=1
Note: mingw make may have a name like ming32-make.exe
How are you starting your command line that you explicitly need to set these? Is there something about Visual Studio configurations that I don't know about?
I had problems with VS bat files in the past, therefore I prefer bare command prompts & make rules to have full control over what is included & linked into final binary.
Sure, but that doesn't explain the specific changes you're suggesting here. Does Visual Studio have issues finding its own SDKs? Is there confusion when multiple SDKs are installed? Or is there something else going on that doesn't happen with a stock installation of either VS2013 or VS2015?
Sometimes yes, when you don't have admin access to the computer you are working on, VS bat scripts can play tricks on you. They require registry access to set some simple paths.
Have you thought to use CMake or Premake as project management system?
Compiled binary with visual studio 2013 (x64) gives the following error. Ideas?
error initializing ui: error initializing libui: initializing Common Controls; code 0 (0x00000000) The operation completed successfully.
I guess the executable needs some manifest information but I couldnt figure it out.
The build script is roughly similar to:
cd common
cl *.c* /c
cd ..
cd windows
cl *.c* /c
cd ..
cl examples\controlgallery\main.c common\*.obj windows\*.obj gdi32.lib user32.lib ole32.lib d2d1.lib dwrite.lib uxtheme.lib comctl32.lib
Yes, if you are building everything manually that way you will need a Common Controls 6 manifest. There is one included as part of windows/resources.rc, which you also need to have built anyway (you forgot to do that with your script).
that was it, thanks.
for those interested, here's the full (simplified) build script:
pushd common
cl /c *.c*
popd
pushd windows
cl /c *.c*
rc resources.rc
popd
pushd examples\controlgallery
cl /c *.c*
popd
link examples\controlgallery\main.obj ^
common\*.obj ^
windows\*.obj windows\*.res ^
gdi32.lib user32.lib ole32.lib d2d1.lib dwrite.lib uxtheme.lib comctl32.lib
If you have GNU make, the preferred way to build is gmake example EXAMPLE=controlgallery, for what it's worth.
@jfcg I followed your steps,but failed with many errors:
E:\Codes\go\src\github.com\andlabs\libui>make.exe RELEASE=1
drawtext.cpp
E:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\sal.h(2886): warning C4005: “__useHeader”: 宏重定义
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\sal_supp.h(57): note: 参见“__useHeader”的前一个定义
E:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\sal.h(2896): warning C4005: “__on_failure”: 宏重定义
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\specstrings_supp.h(77): note: 参见“__on_failure”的前一个定义
e:\codes\go\src\github.com\andlabs\libui\windows\winapi.hpp(4): warning C4005: “STRICT”: 宏重定义
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\windef.h(16): note: 参见“STRICT”的前一个定义
e:\codes\go\src\github.com\andlabs\libui\windows\winapi.hpp(21): warning C4005: “WINVER”: 宏重定义
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\sdkddkver.h(212): note: 参见“WINVER”的前一个定义
e:\codes\go\src\github.com\andlabs\libui\windows\winapi.hpp(22): warning C4005: “_WIN32_WINNT”: 宏重定义
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\sdkddkver.h(197): note: 参见“_WIN32_WINNT”的前一个定义
e:\codes\go\src\github.com\andlabs\libui\windows\winapi.hpp(24): warning C4005: “_WIN32_IE”: 宏重定义
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\sdkddkver.h(230): note: 参见“_WIN32_IE”的前一个定义
e:\codes\go\src\github.com\andlabs\libui\windows\winapi.hpp(25): warning C4005: “NTDDI_VERSION”: 宏重定义
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\sdkddkver.h(203): note: 参见“NTDDI_VERSION”的前一个定义
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): error C2146: 语法错误: 缺少“;”(在标识符“CommctrlIsolationAwarePrivatetRgCebPnQQeRff_pbZPgYQP_QYY”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(40): error C2182: “IsolationAwarePrivatenCv”: 非法使用“void”类型
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(40): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(40): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareInitCommonControls”的前 面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(40): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(41): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(41): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareInitCommonControlsEx”的 前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(41): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(42): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(42): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Create”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(42): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(43): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(43): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Destroy”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(43): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(44): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(44): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_GetImageCount”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(44): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(45): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(45): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_SetImageCount”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(45): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(46): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(46): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Add”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(46): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(47): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(47): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_ReplaceIcon”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(47): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(48): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(48): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_SetBkColor”的 前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(48): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(49): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(49): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_GetBkColor”的 前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(49): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(50): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(50): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_SetOverlayImage”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(50): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(51): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(51): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Draw”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(51): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(52): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(52): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Replace”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(52): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(53): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(53): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_AddMasked”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(53): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(54): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(54): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_DrawEx”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(54): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(55): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(55): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_DrawIndirect” 的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(55): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(56): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(56): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Remove”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(56): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(57): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(57): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_GetIcon”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(57): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(58): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(58): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_LoadImageA”的 前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(58): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(59): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(59): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_LoadImageW”的 前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(59): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(60): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(60): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Copy”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(60): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(61): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(61): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_BeginDrag”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(61): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(62): error C2182: “IsolationAwarePrivatenCv”: 非法使用“void”类型
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(62): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(62): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_EndDrag”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(62): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(63): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(63): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_DragEnter”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(63): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(64): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(64): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_DragLeave”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(64): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(65): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(65): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_DragMove”的前 面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(65): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(66): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(66): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_SetDragCursorImage”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(66): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(67): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(67): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_DragShowNolock ”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(67): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(68): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(68): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_GetDragImage” 的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(68): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(69): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(69): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Read”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(69): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(70): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(70): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Write”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(70): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(72): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(72): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_ReadEx”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(72): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(73): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(73): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_WriteEx”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(73): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(75): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(75): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_GetIconSize”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(75): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(76): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(76): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_SetIconSize”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(76): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(77): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(77): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_GetImageInfo” 的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(77): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(78): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(78): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Merge”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(78): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(79): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(79): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareImageList_Duplicate”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(79): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(80): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(80): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareHIMAGELIST_QueryInterface”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(80): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(81): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(81): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareCreateToolbarEx”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(81): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(82): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(82): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareCreateMappedBitmap”的前 面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(82): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(83): error C2182: “IsolationAwarePrivatenCv”: 非法使用“void”类型
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(83): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(83): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareDrawStatusTextA”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(83): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(84): error C2182: “IsolationAwarePrivatenCv”: 非法使用“void”类型
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(84): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(84): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareDrawStatusTextW”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(84): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(85): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(85): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareCreateStatusWindowA”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(85): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(86): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(86): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareCreateStatusWindowW”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(86): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(87): error C2182: “IsolationAwarePrivatenCv”: 非法使用“void”类型
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(87): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(87): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareMenuHelp”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(87): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(88): error C2373: “IsolationAwarePrivatenCv”: 重定义;不同的类型修饰符
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(37): note: 参见“IsolationAwarePrivatenCv”的声明
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(88): error C2146: 语法错误: 缺少“;”(在标识符“IsolationAwareShowHideMenuCtl”的前面)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(88): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(89): error C2182: “IsolationAwarePrivatenCv”: 非法使用“void”类型
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\commctrl.inl(89): fatal error C1003: 错误计数超过 100;正在停止编译
make.exe[1]: *** [.obj/windows_drawtext.cpp.o] 错误 2
make.exe: *** [libui] 错误 2
E:\Codes\go\src\github.com\andlabs\libui>make.exe -n
make.exe -f build/GNUmakefile.libui inlibuibuild=1
cl -Fo:.obj/windows_drawtext.cpp.o -c windows/drawtext.cpp -D "_UI_EXTERN=__declspec(dllexport) extern" -W4 -wd4100 -TP -bigobj -nologo -RTC1 -RTCs -RTCu -EHsc -I "E:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include" -I "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include" -I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt" -Zi -Fd.obj/windows_drawtext.cpp.o.pdb
echo ====== Compiled windows/drawtext.cpp
I got those warnings as well but no errors. I was able to generate libui.dll with those steps.
Remove .obj & out directories and try again.
Those warnings are in the Microsoft headers. I don't know why they show up. Maybe they have to do with your -I options for choosing the SDK?
A premake script would be awesome.
@andlabs I moved the system headers to stdafx.h.
http://forums.codeguru.com/showthread.php?410443-RESOLVED-Errors-in-commctrl-h-and-prsht-h
But,I got this:
windows/colordialog.cpp(1245): error C2664: “INT_PTR DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM)”: 无法将参数 2 从“LPCTSTR”转换为“LPCWSTR”
@andlabs @jfcg I have got libui.dll successfully !

I'm still not sure what caused your build errors, sorry; nor do I know what the messages translate to o_O
@andlabs I pulled the latest code and changed another PC ...
All right; whatever works I suppose :/ If anyone has a similar error, I'd like to know. If there's something that doesn't let people build their programs depending on the Visual Studio configuration, it's important we get that fixed :)
I think optional CMake integration would be great. Should be pretty straightforward to implement. I can get things started if anyone thinks it'd be good to have.
@kainjow I think it is not necessary.
I am going to close this issue now. Switching to another build system is stil a possibility, but it should be discussed in its own topic. I'll probably make one either tonight or tomorrow.
Most helpful comment
that was it, thanks.
for those interested, here's the full (simplified) build script: