Discussion:
[soci-users] Does SOCI support VisualStudio 2015/VC 14?
john
2016-11-18 01:10:58 UTC
Permalink
I posted this question on 2016-09-16 but have not seen a response. Does
anybody know whether or not SOCI supports VisualStudio 2015? Here's my
original question:

Does soci-3.2.3 support VC 14? The following command appeared to be
successful:

cmake -DSOCI_STATIC=ON -DWITH_DB2=OFF -DWITH_FIREBIRD=OFF
-DWITH_MYSQL=OFF -DWITH_ORACLE=OFF -DWITH_POSTGRESQL=OFF
-DWITH_SQLITE3=OFF -DSOCI_EMPTY=OFF -DWITH_BOOST=ON -DWITH_ODBC=ON
-DSOCI_ODBC=ON ..

-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler using: Visual Studio 14 2015
-- Check for working C compiler using: Visual Studio 14 2015 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring SOCI:
-- SOCI_VERSION = 3.2.3
-- SOCI_ABI_VERSION = 3_2

...

However all builds fail with messages like:

x64\Debug\backend-loader.obj : fatal error LNK1112: module machine type
'x64' conflicts with target machine type 'X86'

I see 14 in the compiler and linker lines:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi
/W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D
"CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise
/Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_7a48a.dir\Debug\\"
/Fd"cmTC_7a48a.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue
"C:\Program Files (x86)\CMake\share\cmake-3.4\Modules\CMakeCCompilerABI.c"

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe
/ERRORREPORT:QUEUE
/OUT:"D:\devsrc\soci-3.2.3\build_64\CMakeFiles\CMakeTmp\Debug\cmTC_7a48a.exe"

/INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
/MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/manifest:embed /Debug
/PDB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.pdb"

/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT
/IMPLIB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.lib"

/MACHINE:X86 /SAFESEH /machine:X86 /debug
cmTC_7a48a.dir\Debug\CMakeCCompilerABI.obj

I see /MACHINE:X86 in the link line above. Do I need to edit some SOCI
config files or does SOCI already support VC 14?

Thanks,
john


------------------------------------------------------------------------------
Erasmo Aguilera
2016-11-18 02:38:39 UTC
Permalink
Hello John,

It seems that you are building SOCI on an x64 machine, but you are using the x86 compiler of Visual Studio. Maybe you are using a x86 configuration for the Visual Studio project. To fix it, either change the Visual Studio configuration to a x64 one or use NMake for the build instead (just as I do it).

If you wanna go with NMake, try the following:

- Open a new command prompt.
- Run "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat". This will set the required VC variables for using the x64 compiler tools.
- Try building SOCI again with the same command, but also including these options: -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=C:\SOCI
- Run "nmake"
- Run "nmake install"
- If everything goes well, you'll find the installed SOCI files in C:\SOCI.

Hope it helps.

PS: Remember, the benefit of using a free tool is at the price of support. If you make a question to a user's list and get an answer, consider yourself lucky. :)


Erasmo.


-----Original Message-----
From: john [mailto:***@dgi.com]
Sent: jueves 17 de noviembre de 2016 7:11 p. m.
To: soci-***@lists.sourceforge.net
Subject: [soci-users] Does SOCI support VisualStudio 2015/VC 14?

I posted this question on 2016-09-16 but have not seen a response. Does anybody know whether or not SOCI supports VisualStudio 2015? Here's my original question:

Does soci-3.2.3 support VC 14? The following command appeared to be
successful:

cmake -DSOCI_STATIC=ON -DWITH_DB2=OFF -DWITH_FIREBIRD=OFF -DWITH_MYSQL=OFF -DWITH_ORACLE=OFF -DWITH_POSTGRESQL=OFF -DWITH_SQLITE3=OFF -DSOCI_EMPTY=OFF -DWITH_BOOST=ON -DWITH_ODBC=ON -DSOCI_ODBC=ON ..

-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler using: Visual Studio 14 2015
-- Check for working C compiler using: Visual Studio 14 2015 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring SOCI:
-- SOCI_VERSION = 3.2.3
-- SOCI_ABI_VERSION = 3_2

...

However all builds fail with messages like:

x64\Debug\backend-loader.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

I see 14 in the compiler and linker lines:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi
/W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_7a48a.dir\Debug\\"
/Fd"cmTC_7a48a.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue "C:\Program Files (x86)\CMake\share\cmake-3.4\Modules\CMakeCCompilerABI.c"

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe /ERRORREPORT:QUEUE /OUT:"D:\devsrc\soci-3.2.3\build_64\CMakeFiles\CMakeTmp\Debug\cmTC_7a48a.exe"

/INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/manifest:embed /Debug
/PDB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.pdb"

/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.lib"

/MACHINE:X86 /SAFESEH /machine:X86 /debug cmTC_7a48a.dir\Debug\CMakeCCompilerABI.obj

I see /MACHINE:X86 in the link line above. Do I need to edit some SOCI config files or does SOCI already support VC 14?

Thanks,
john
john
2016-11-18 16:55:03 UTC
Permalink
Thank you very much Erasmo. The thing is that when I set my build
environment to use VC 11 and then run cmake a SOCI.sln is created which
I can then use to build SOCI.

However when I set my build environment to use VC 14 and then run cmake
a SOCI.sln is created which is useless. Loading that SOCI.sln gives the
attached errors. So does than mean that with VC 14 I have to build SOCI
outside of devenv?

john
Post by Erasmo Aguilera
Hello John,
It seems that you are building SOCI on an x64 machine, but you are using the x86 compiler of Visual Studio. Maybe you are using a x86 configuration for the Visual Studio project. To fix it, either change the Visual Studio configuration to a x64 one or use NMake for the build instead (just as I do it).
- Open a new command prompt.
- Run "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat". This will set the required VC variables for using the x64 compiler tools.
- Try building SOCI again with the same command, but also including these options: -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=C:\SOCI
- Run "nmake"
- Run "nmake install"
- If everything goes well, you'll find the installed SOCI files in C:\SOCI.
Hope it helps.
PS: Remember, the benefit of using a free tool is at the price of support. If you make a question to a user's list and get an answer, consider yourself lucky. :)
Erasmo.
-----Original Message-----
Sent: jueves 17 de noviembre de 2016 7:11 p. m.
Subject: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Does soci-3.2.3 support VC 14? The following command appeared to be
cmake -DSOCI_STATIC=ON -DWITH_DB2=OFF -DWITH_FIREBIRD=OFF -DWITH_MYSQL=OFF -DWITH_ORACLE=OFF -DWITH_POSTGRESQL=OFF -DWITH_SQLITE3=OFF -DSOCI_EMPTY=OFF -DWITH_BOOST=ON -DWITH_ODBC=ON -DSOCI_ODBC=ON ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler using: Visual Studio 14 2015
-- Check for working C compiler using: Visual Studio 14 2015 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SOCI_VERSION = 3.2.3
-- SOCI_ABI_VERSION = 3_2
...
x64\Debug\backend-loader.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi
/W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_7a48a.dir\Debug\\"
/Fd"cmTC_7a48a.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue "C:\Program Files (x86)\CMake\share\cmake-3.4\Modules\CMakeCCompilerABI.c"
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe /ERRORREPORT:QUEUE /OUT:"D:\devsrc\soci-3.2.3\build_64\CMakeFiles\CMakeTmp\Debug\cmTC_7a48a.exe"
/INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/manifest:embed /Debug
/PDB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.pdb"
/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.lib"
/MACHINE:X86 /SAFESEH /machine:X86 /debug cmTC_7a48a.dir\Debug\CMakeCCompilerABI.obj
I see /MACHINE:X86 in the link line above. Do I need to edit some SOCI config files or does SOCI already support VC 14?
Thanks,
john
------------------------------------------------------------------------------
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
Erasmo Aguilera
2016-11-18 22:51:51 UTC
Permalink
John,

A SOCI.sln is created by default because you are not specifying any build system with the -G option for cmake. I don't know if SOCI has issues with Visual Studio 2015, it shouldn't. But that is why I suggested you to try building SOCI from the command line with NMake using the "-G "NMake Makefiles" option (without quotes). Follow the steps I gave you and tell me how it goes.

Hope it helps.

Erasmo.

-----Original Message-----
From: john [mailto:***@dgi.com]
Sent: viernes 18 de noviembre de 2016 10:55 a. m.
To: soci-***@lists.sourceforge.net
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?

Thank you very much Erasmo. The thing is that when I set my build environment to use VC 11 and then run cmake a SOCI.sln is created which I can then use to build SOCI.

However when I set my build environment to use VC 14 and then run cmake a SOCI.sln is created which is useless. Loading that SOCI.sln gives the attached errors. So does than mean that with VC 14 I have to build SOCI outside of devenv?

john
Post by Erasmo Aguilera
Hello John,
It seems that you are building SOCI on an x64 machine, but you are using the x86 compiler of Visual Studio. Maybe you are using a x86 configuration for the Visual Studio project. To fix it, either change the Visual Studio configuration to a x64 one or use NMake for the build instead (just as I do it).
- Open a new command prompt.
- Run "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat". This will set the required VC variables for using the x64 compiler tools.
- Try building SOCI again with the same command, but also including
these options: -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=C:\SOCI
- Run "nmake"
- Run "nmake install"
- If everything goes well, you'll find the installed SOCI files in C:\SOCI.
Hope it helps.
PS: Remember, the benefit of using a free tool is at the price of
support. If you make a question to a user's list and get an answer,
consider yourself lucky. :)
Erasmo.
-----Original Message-----
Sent: jueves 17 de noviembre de 2016 7:11 p. m.
Subject: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Does soci-3.2.3 support VC 14? The following command appeared to be
cmake -DSOCI_STATIC=ON -DWITH_DB2=OFF -DWITH_FIREBIRD=OFF -DWITH_MYSQL=OFF -DWITH_ORACLE=OFF -DWITH_POSTGRESQL=OFF -DWITH_SQLITE3=OFF -DSOCI_EMPTY=OFF -DWITH_BOOST=ON -DWITH_ODBC=ON -DSOCI_ODBC=ON ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler using: Visual Studio 14 2015
-- Check for working C compiler using: Visual Studio 14 2015 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SOCI_VERSION = 3.2.3
-- SOCI_ABI_VERSION = 3_2
...
x64\Debug\backend-loader.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi
/W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_7a48a.dir\Debug\\"
/Fd"cmTC_7a48a.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue "C:\Program Files (x86)\CMake\share\cmake-3.4\Modules\CMakeCCompilerABI.c"
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe /ERRORREPORT:QUEUE /OUT:"D:\devsrc\soci-3.2.3\build_64\CMakeFiles\CMakeTmp\Debug\cmTC_7a48a.exe"
/INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/manifest:embed /Debug
/PDB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.pdb"
/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.lib"
/MACHINE:X86 /SAFESEH /machine:X86 /debug
cmTC_7a48a.dir\Debug\CMakeCCompilerABI.obj
I see /MACHINE:X86 in the link line above. Do I need to edit some SOCI config files or does SOCI already support VC 14?
Thanks,
john
----------------------------------------------------------------------
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
----------------------------------------------------------------------
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
john
2016-11-19 00:51:39 UTC
Permalink
Erasmo,

Oh, I see. Sorry that I missed that.

lib/soci_core_3_2.lib built successfully.

However the odbc backend failed:

D:\devsrc\soci-3.2.3\backends\odbc\session.cpp(63): warning C4996:
'sscanf': This function or variable may be unsafe. Consider using
sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.
C:\Program Files (x86)\Windows
Kits\10\include\10.0.10150.0\ucrt\stdio.h(2254): note: see declaration
of 'sscanf'
[ 59%] Building CXX object
backends/odbc/CMakeFiles/soci_odbc.dir/standard-into-type.cpp.obj
standard-into-type.cpp
C:\Program Files (x86)\Windows
Kits\10\include\10.0.10150.0\ucrt\stdio.h(1925): warning C4005:
'snprintf': macro redefinition
D:\devsrc\soci-3.2.3\core\soci-platform.h(27): note: see previous
definition of 'snprintf'
C:\Program Files (x86)\Windows
Kits\10\include\10.0.10150.0\ucrt\stdio.h(1927): fatal error C1189:
#error: Macro definition of snprintf conflicts with Standard Library
function declaration
NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~4.0\VC\bin\amd64\cl.exe'
: return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual
Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual
Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.

Thanks a lot for your help,
john
Post by Erasmo Aguilera
John,
A SOCI.sln is created by default because you are not specifying any build system with the -G option for cmake. I don't know if SOCI has issues with Visual Studio 2015, it shouldn't. But that is why I suggested you to try building SOCI from the command line with NMake using the "-G "NMake Makefiles" option (without quotes). Follow the steps I gave you and tell me how it goes.
Hope it helps.
Erasmo.
-----Original Message-----
Sent: viernes 18 de noviembre de 2016 10:55 a. m.
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Thank you very much Erasmo. The thing is that when I set my build environment to use VC 11 and then run cmake a SOCI.sln is created which I can then use to build SOCI.
However when I set my build environment to use VC 14 and then run cmake a SOCI.sln is created which is useless. Loading that SOCI.sln gives the attached errors. So does than mean that with VC 14 I have to build SOCI outside of devenv?
john
Post by Erasmo Aguilera
Hello John,
It seems that you are building SOCI on an x64 machine, but you are using the x86 compiler of Visual Studio. Maybe you are using a x86 configuration for the Visual Studio project. To fix it, either change the Visual Studio configuration to a x64 one or use NMake for the build instead (just as I do it).
- Open a new command prompt.
- Run "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat". This will set the required VC variables for using the x64 compiler tools.
- Try building SOCI again with the same command, but also including
these options: -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=C:\SOCI
- Run "nmake"
- Run "nmake install"
- If everything goes well, you'll find the installed SOCI files in C:\SOCI.
Hope it helps.
PS: Remember, the benefit of using a free tool is at the price of
support. If you make a question to a user's list and get an answer,
consider yourself lucky. :)
Erasmo.
-----Original Message-----
Sent: jueves 17 de noviembre de 2016 7:11 p. m.
Subject: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Does soci-3.2.3 support VC 14? The following command appeared to be
cmake -DSOCI_STATIC=ON -DWITH_DB2=OFF -DWITH_FIREBIRD=OFF -DWITH_MYSQL=OFF -DWITH_ORACLE=OFF -DWITH_POSTGRESQL=OFF -DWITH_SQLITE3=OFF -DSOCI_EMPTY=OFF -DWITH_BOOST=ON -DWITH_ODBC=ON -DSOCI_ODBC=ON ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler using: Visual Studio 14 2015
-- Check for working C compiler using: Visual Studio 14 2015 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SOCI_VERSION = 3.2.3
-- SOCI_ABI_VERSION = 3_2
...
x64\Debug\backend-loader.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi
/W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_7a48a.dir\Debug\\"
/Fd"cmTC_7a48a.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue "C:\Program Files (x86)\CMake\share\cmake-3.4\Modules\CMakeCCompilerABI.c"
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe /ERRORREPORT:QUEUE /OUT:"D:\devsrc\soci-3.2.3\build_64\CMakeFiles\CMakeTmp\Debug\cmTC_7a48a.exe"
/INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/manifest:embed /Debug
/PDB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.pdb"
/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.lib"
/MACHINE:X86 /SAFESEH /machine:X86 /debug
cmTC_7a48a.dir\Debug\CMakeCCompilerABI.obj
I see /MACHINE:X86 in the link line above. Do I need to edit some SOCI config files or does SOCI already support VC 14?
Thanks,
john
----------------------------------------------------------------------
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
----------------------------------------------------------------------
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
Erasmo Aguilera
2016-11-19 15:24:18 UTC
Permalink
John,

Look carefully, the ODBC backend just issues a warning that seems to be unimportant.

The build fails because there are two included files that redefine the 'snprintf' symbol. The first definition is in "D:\devsrc\soci-3.2.3\core\soci-platform.h" and the second one (which produces the error) is in "C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt\stdio.h" (a Standard Library file).

To fix the error, comment the line 27 of "D:\devsrc\soci-3.2.3\core\soci-platform.h":

// #define snprintf _snprintf

, so that SOCI ignores its own definition and uses that of the Standard Library instead.

Hope it helps.


Erasmo.


-----Original Message-----
From: john [mailto:***@dgi.com]
Sent: viernes 18 de noviembre de 2016 6:52 p. m.
To: soci-***@lists.sourceforge.net
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?

Erasmo,

Oh, I see. Sorry that I missed that.

lib/soci_core_3_2.lib built successfully.

However the odbc backend failed:

D:\devsrc\soci-3.2.3\backends\odbc\session.cpp(63): warning C4996:
'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.
C:\Program Files (x86)\Windows
Kits\10\include\10.0.10150.0\ucrt\stdio.h(2254): note: see declaration of 'sscanf'
[ 59%] Building CXX object
backends/odbc/CMakeFiles/soci_odbc.dir/standard-into-type.cpp.obj
standard-into-type.cpp
C:\Program Files (x86)\Windows
Kits\10\include\10.0.10150.0\ucrt\stdio.h(1925): warning C4005:
'snprintf': macro redefinition
D:\devsrc\soci-3.2.3\core\soci-platform.h(27): note: see previous definition of 'snprintf'
C:\Program Files (x86)\Windows
Kits\10\include\10.0.10150.0\ucrt\stdio.h(1927): fatal error C1189:
#error: Macro definition of snprintf conflicts with Standard Library function declaration NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~4.0\VC\bin\amd64\cl.exe'
: return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.

Thanks a lot for your help,
john
Post by Erasmo Aguilera
John,
A SOCI.sln is created by default because you are not specifying any build system with the -G option for cmake. I don't know if SOCI has issues with Visual Studio 2015, it shouldn't. But that is why I suggested you to try building SOCI from the command line with NMake using the "-G "NMake Makefiles" option (without quotes). Follow the steps I gave you and tell me how it goes.
Hope it helps.
Erasmo.
-----Original Message-----
Sent: viernes 18 de noviembre de 2016 10:55 a. m.
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Thank you very much Erasmo. The thing is that when I set my build environment to use VC 11 and then run cmake a SOCI.sln is created which I can then use to build SOCI.
However when I set my build environment to use VC 14 and then run cmake a SOCI.sln is created which is useless. Loading that SOCI.sln gives the attached errors. So does than mean that with VC 14 I have to build SOCI outside of devenv?
john
Post by Erasmo Aguilera
Hello John,
It seems that you are building SOCI on an x64 machine, but you are using the x86 compiler of Visual Studio. Maybe you are using a x86 configuration for the Visual Studio project. To fix it, either change the Visual Studio configuration to a x64 one or use NMake for the build instead (just as I do it).
- Open a new command prompt.
- Run "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat". This will set the required VC variables for using the x64 compiler tools.
- Try building SOCI again with the same command, but also including
these options: -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=C:\SOCI
- Run "nmake"
- Run "nmake install"
- If everything goes well, you'll find the installed SOCI files in C:\SOCI.
Hope it helps.
PS: Remember, the benefit of using a free tool is at the price of
support. If you make a question to a user's list and get an answer,
consider yourself lucky. :)
Erasmo.
-----Original Message-----
Sent: jueves 17 de noviembre de 2016 7:11 p. m.
Subject: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Does soci-3.2.3 support VC 14? The following command appeared to be
cmake -DSOCI_STATIC=ON -DWITH_DB2=OFF -DWITH_FIREBIRD=OFF -DWITH_MYSQL=OFF -DWITH_ORACLE=OFF -DWITH_POSTGRESQL=OFF -DWITH_SQLITE3=OFF -DSOCI_EMPTY=OFF -DWITH_BOOST=ON -DWITH_ODBC=ON -DSOCI_ODBC=ON ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler using: Visual Studio 14 2015
-- Check for working C compiler using: Visual Studio 14 2015 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SOCI_VERSION = 3.2.3
-- SOCI_ABI_VERSION = 3_2
...
x64\Debug\backend-loader.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi
/W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_7a48a.dir\Debug\\"
/Fd"cmTC_7a48a.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue "C:\Program Files (x86)\CMake\share\cmake-3.4\Modules\CMakeCCompilerABI.c"
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe /ERRORREPORT:QUEUE /OUT:"D:\devsrc\soci-3.2.3\build_64\CMakeFiles\CMakeTmp\Debug\cmTC_7a48a.exe"
/INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/manifest:embed /Debug
/PDB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.pdb"
/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.lib"
/MACHINE:X86 /SAFESEH /machine:X86 /debug
cmTC_7a48a.dir\Debug\CMakeCCompilerABI.obj
I see /MACHINE:X86 in the link line above. Do I need to edit some SOCI config files or does SOCI already support VC 14?
Thanks,
john
---------------------------------------------------------------------
-
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
---------------------------------------------------------------------
-
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
----------------------------------------------------------------------
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
john
2016-11-28 19:21:27 UTC
Permalink
Erasmo,

I modified soci-platform.h by enclosing _snprintf as follows:

#if _MSC_VER < 1800
#define snprintf _snprintf
#endif

Then the remaining library built. I did some testing and SOCI is now
working for me compiled with VC 14.

Thank you very much for your help with this!

john

PS Sorry for the delay getting back to you. I was on a week long
Thanksgiving holiday.
Post by Erasmo Aguilera
John,
Look carefully, the ODBC backend just issues a warning that seems to be unimportant.
The build fails because there are two included files that redefine the 'snprintf' symbol. The first definition is in "D:\devsrc\soci-3.2.3\core\soci-platform.h" and the second one (which produces the error) is in "C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt\stdio.h" (a Standard Library file).
// #define snprintf _snprintf
, so that SOCI ignores its own definition and uses that of the Standard Library instead.
Hope it helps.
Erasmo.
-----Original Message-----
Sent: viernes 18 de noviembre de 2016 6:52 p. m.
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Erasmo,
Oh, I see. Sorry that I missed that.
lib/soci_core_3_2.lib built successfully.
'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.
C:\Program Files (x86)\Windows
Kits\10\include\10.0.10150.0\ucrt\stdio.h(2254): note: see declaration of 'sscanf'
[ 59%] Building CXX object
backends/odbc/CMakeFiles/soci_odbc.dir/standard-into-type.cpp.obj
standard-into-type.cpp
C:\Program Files (x86)\Windows
'snprintf': macro redefinition
D:\devsrc\soci-3.2.3\core\soci-platform.h(27): note: see previous definition of 'snprintf'
C:\Program Files (x86)\Windows
#error: Macro definition of snprintf conflicts with Standard Library function declaration NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~4.0\VC\bin\amd64\cl.exe'
: return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
Thanks a lot for your help,
john
Post by Erasmo Aguilera
John,
A SOCI.sln is created by default because you are not specifying any build system with the -G option for cmake. I don't know if SOCI has issues with Visual Studio 2015, it shouldn't. But that is why I suggested you to try building SOCI from the command line with NMake using the "-G "NMake Makefiles" option (without quotes). Follow the steps I gave you and tell me how it goes.
Hope it helps.
Erasmo.
-----Original Message-----
Sent: viernes 18 de noviembre de 2016 10:55 a. m.
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Thank you very much Erasmo. The thing is that when I set my build environment to use VC 11 and then run cmake a SOCI.sln is created which I can then use to build SOCI.
However when I set my build environment to use VC 14 and then run cmake a SOCI.sln is created which is useless. Loading that SOCI.sln gives the attached errors. So does than mean that with VC 14 I have to build SOCI outside of devenv?
john
Post by Erasmo Aguilera
Hello John,
It seems that you are building SOCI on an x64 machine, but you are using the x86 compiler of Visual Studio. Maybe you are using a x86 configuration for the Visual Studio project. To fix it, either change the Visual Studio configuration to a x64 one or use NMake for the build instead (just as I do it).
- Open a new command prompt.
- Run "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat". This will set the required VC variables for using the x64 compiler tools.
- Try building SOCI again with the same command, but also including
these options: -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=C:\SOCI
- Run "nmake"
- Run "nmake install"
- If everything goes well, you'll find the installed SOCI files in C:\SOCI.
Hope it helps.
PS: Remember, the benefit of using a free tool is at the price of
support. If you make a question to a user's list and get an answer,
consider yourself lucky. :)
Erasmo.
-----Original Message-----
Sent: jueves 17 de noviembre de 2016 7:11 p. m.
Subject: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Does soci-3.2.3 support VC 14? The following command appeared to be
cmake -DSOCI_STATIC=ON -DWITH_DB2=OFF -DWITH_FIREBIRD=OFF -DWITH_MYSQL=OFF -DWITH_ORACLE=OFF -DWITH_POSTGRESQL=OFF -DWITH_SQLITE3=OFF -DSOCI_EMPTY=OFF -DWITH_BOOST=ON -DWITH_ODBC=ON -DSOCI_ODBC=ON ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler using: Visual Studio 14 2015
-- Check for working C compiler using: Visual Studio 14 2015 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SOCI_VERSION = 3.2.3
-- SOCI_ABI_VERSION = 3_2
...
x64\Debug\backend-loader.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi
/W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_7a48a.dir\Debug\\"
/Fd"cmTC_7a48a.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue "C:\Program Files (x86)\CMake\share\cmake-3.4\Modules\CMakeCCompilerABI.c"
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe /ERRORREPORT:QUEUE /OUT:"D:\devsrc\soci-3.2.3\build_64\CMakeFiles\CMakeTmp\Debug\cmTC_7a48a.exe"
/INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/manifest:embed /Debug
/PDB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.pdb"
/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.lib"
/MACHINE:X86 /SAFESEH /machine:X86 /debug
cmTC_7a48a.dir\Debug\CMakeCCompilerABI.obj
I see /MACHINE:X86 in the link line above. Do I need to edit some SOCI config files or does SOCI already support VC 14?
Thanks,
john
---------------------------------------------------------------------
-
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
---------------------------------------------------------------------
-
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
----------------------------------------------------------------------
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
Mateusz Loskot
2016-11-28 22:45:09 UTC
Permalink
Hi,

For the record, I have just managed to build SOCI 3.2.3 with VS2015
(CL.EXE version19.00.24215.1) without any problems or modifications required.

git clone https://github.com/SOCI/soci.git
git co release/3.2
mkdir _build
cd _build
cmake ..

then load SOCI.sln with VS2015 and build.

I'm leaving the release/3.2 branch as it is.

BTW, master builds w/o problems too.

Regards,
Mateusz
Post by john
Erasmo,
#if _MSC_VER < 1800
#define snprintf _snprintf
#endif
Then the remaining library built. I did some testing and SOCI is now
working for me compiled with VC 14.
Thank you very much for your help with this!
john
PS Sorry for the delay getting back to you. I was on a week long
Thanksgiving holiday.
Post by Erasmo Aguilera
John,
Look carefully, the ODBC backend just issues a warning that seems to be unimportant.
The build fails because there are two included files that redefine the 'snprintf' symbol. The first definition is in "D:\devsrc\soci-3.2.3\core\soci-platform.h" and the second one (which produces the error) is in "C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt\stdio.h" (a Standard Library file).
// #define snprintf _snprintf
, so that SOCI ignores its own definition and uses that of the Standard Library instead.
Hope it helps.
Erasmo.
-----Original Message-----
Sent: viernes 18 de noviembre de 2016 6:52 p. m.
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Erasmo,
Oh, I see. Sorry that I missed that.
lib/soci_core_3_2.lib built successfully.
'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.
C:\Program Files (x86)\Windows
Kits\10\include\10.0.10150.0\ucrt\stdio.h(2254): note: see declaration of 'sscanf'
[ 59%] Building CXX object
backends/odbc/CMakeFiles/soci_odbc.dir/standard-into-type.cpp.obj
standard-into-type.cpp
C:\Program Files (x86)\Windows
'snprintf': macro redefinition
D:\devsrc\soci-3.2.3\core\soci-platform.h(27): note: see previous definition of 'snprintf'
C:\Program Files (x86)\Windows
#error: Macro definition of snprintf conflicts with Standard Library function declaration NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~4.0\VC\bin\amd64\cl.exe'
: return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
Thanks a lot for your help,
john
Post by Erasmo Aguilera
John,
A SOCI.sln is created by default because you are not specifying any build system with the -G option for cmake. I don't know if SOCI has issues with Visual Studio 2015, it shouldn't. But that is why I suggested you to try building SOCI from the command line with NMake using the "-G "NMake Makefiles" option (without quotes). Follow the steps I gave you and tell me how it goes.
Hope it helps.
Erasmo.
-----Original Message-----
Sent: viernes 18 de noviembre de 2016 10:55 a. m.
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Thank you very much Erasmo. The thing is that when I set my build environment to use VC 11 and then run cmake a SOCI.sln is created which I can then use to build SOCI.
However when I set my build environment to use VC 14 and then run cmake a SOCI.sln is created which is useless. Loading that SOCI.sln gives the attached errors. So does than mean that with VC 14 I have to build SOCI outside of devenv?
john
Post by Erasmo Aguilera
Hello John,
It seems that you are building SOCI on an x64 machine, but you are using the x86 compiler of Visual Studio. Maybe you are using a x86 configuration for the Visual Studio project. To fix it, either change the Visual Studio configuration to a x64 one or use NMake for the build instead (just as I do it).
- Open a new command prompt.
- Run "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat". This will set the required VC variables for using the x64 compiler tools.
- Try building SOCI again with the same command, but also including
these options: -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=C:\SOCI
- Run "nmake"
- Run "nmake install"
- If everything goes well, you'll find the installed SOCI files in C:\SOCI.
Hope it helps.
PS: Remember, the benefit of using a free tool is at the price of
support. If you make a question to a user's list and get an answer,
consider yourself lucky. :)
Erasmo.
-----Original Message-----
Sent: jueves 17 de noviembre de 2016 7:11 p. m.
Subject: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Does soci-3.2.3 support VC 14? The following command appeared to be
cmake -DSOCI_STATIC=ON -DWITH_DB2=OFF -DWITH_FIREBIRD=OFF -DWITH_MYSQL=OFF -DWITH_ORACLE=OFF -DWITH_POSTGRESQL=OFF -DWITH_SQLITE3=OFF -DSOCI_EMPTY=OFF -DWITH_BOOST=ON -DWITH_ODBC=ON -DSOCI_ODBC=ON ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler using: Visual Studio 14 2015
-- Check for working C compiler using: Visual Studio 14 2015 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SOCI_VERSION = 3.2.3
-- SOCI_ABI_VERSION = 3_2
...
x64\Debug\backend-loader.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi
/W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_7a48a.dir\Debug\\"
/Fd"cmTC_7a48a.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue "C:\Program Files (x86)\CMake\share\cmake-3.4\Modules\CMakeCCompilerABI.c"
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe /ERRORREPORT:QUEUE /OUT:"D:\devsrc\soci-3.2.3\build_64\CMakeFiles\CMakeTmp\Debug\cmTC_7a48a.exe"
/INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/manifest:embed /Debug
/PDB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.pdb"
/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.lib"
/MACHINE:X86 /SAFESEH /machine:X86 /debug
cmTC_7a48a.dir\Debug\CMakeCCompilerABI.obj
I see /MACHINE:X86 in the link line above. Do I need to edit some SOCI config files or does SOCI already support VC 14?
Thanks,
john
---------------------------------------------------------------------
-
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
---------------------------------------------------------------------
-
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
----------------------------------------------------------------------
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
--
Mateusz Loskot, http://mateusz.loskot.net

------------------------------------------------------------------------------
Erasmo Aguilera
2016-11-29 01:12:45 UTC
Permalink
Ok, John. That solution to the "snprintf" issue is more elegant.

I am glad you have finally solved your problem.


Erasmo.

-----Original Message-----
From: john [mailto:***@dgi.com]
Sent: lunes 28 de noviembre de 2016 1:21 p. m.
To: soci-***@lists.sourceforge.net
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?

Erasmo,

I modified soci-platform.h by enclosing _snprintf as follows:

#if _MSC_VER < 1800
#define snprintf _snprintf
#endif

Then the remaining library built. I did some testing and SOCI is now working for me compiled with VC 14.

Thank you very much for your help with this!

john

PS Sorry for the delay getting back to you. I was on a week long Thanksgiving holiday.
Post by Erasmo Aguilera
John,
Look carefully, the ODBC backend just issues a warning that seems to be unimportant.
The build fails because there are two included files that redefine the 'snprintf' symbol. The first definition is in "D:\devsrc\soci-3.2.3\core\soci-platform.h" and the second one (which produces the error) is in "C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt\stdio.h" (a Standard Library file).
// #define snprintf _snprintf
, so that SOCI ignores its own definition and uses that of the Standard Library instead.
Hope it helps.
Erasmo.
-----Original Message-----
Sent: viernes 18 de noviembre de 2016 6:52 p. m.
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Erasmo,
Oh, I see. Sorry that I missed that.
lib/soci_core_3_2.lib built successfully.
'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.
C:\Program Files (x86)\Windows
Kits\10\include\10.0.10150.0\ucrt\stdio.h(2254): note: see declaration of 'sscanf'
[ 59%] Building CXX object
backends/odbc/CMakeFiles/soci_odbc.dir/standard-into-type.cpp.obj
standard-into-type.cpp
C:\Program Files (x86)\Windows
'snprintf': macro redefinition
D:\devsrc\soci-3.2.3\core\soci-platform.h(27): note: see previous definition of 'snprintf'
C:\Program Files (x86)\Windows
#error: Macro definition of snprintf conflicts with Standard Library function declaration NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~4.0\VC\bin\amd64\cl.exe'
: return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
Thanks a lot for your help,
john
Post by Erasmo Aguilera
John,
A SOCI.sln is created by default because you are not specifying any build system with the -G option for cmake. I don't know if SOCI has issues with Visual Studio 2015, it shouldn't. But that is why I suggested you to try building SOCI from the command line with NMake using the "-G "NMake Makefiles" option (without quotes). Follow the steps I gave you and tell me how it goes.
Hope it helps.
Erasmo.
-----Original Message-----
Sent: viernes 18 de noviembre de 2016 10:55 a. m.
Subject: Re: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Thank you very much Erasmo. The thing is that when I set my build environment to use VC 11 and then run cmake a SOCI.sln is created which I can then use to build SOCI.
However when I set my build environment to use VC 14 and then run cmake a SOCI.sln is created which is useless. Loading that SOCI.sln gives the attached errors. So does than mean that with VC 14 I have to build SOCI outside of devenv?
john
Post by Erasmo Aguilera
Hello John,
It seems that you are building SOCI on an x64 machine, but you are using the x86 compiler of Visual Studio. Maybe you are using a x86 configuration for the Visual Studio project. To fix it, either change the Visual Studio configuration to a x64 one or use NMake for the build instead (just as I do it).
- Open a new command prompt.
- Run "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat". This will set the required VC variables for using the x64 compiler tools.
- Try building SOCI again with the same command, but also including
these options: -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=C:\SOCI
- Run "nmake"
- Run "nmake install"
- If everything goes well, you'll find the installed SOCI files in C:\SOCI.
Hope it helps.
PS: Remember, the benefit of using a free tool is at the price of
support. If you make a question to a user's list and get an answer,
consider yourself lucky. :)
Erasmo.
-----Original Message-----
Sent: jueves 17 de noviembre de 2016 7:11 p. m.
Subject: [soci-users] Does SOCI support VisualStudio 2015/VC 14?
Does soci-3.2.3 support VC 14? The following command appeared to be
cmake -DSOCI_STATIC=ON -DWITH_DB2=OFF -DWITH_FIREBIRD=OFF -DWITH_MYSQL=OFF -DWITH_ORACLE=OFF -DWITH_POSTGRESQL=OFF -DWITH_SQLITE3=OFF -DSOCI_EMPTY=OFF -DWITH_BOOST=ON -DWITH_ODBC=ON -DSOCI_ODBC=ON ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler using: Visual Studio 14 2015
-- Check for working C compiler using: Visual Studio 14 2015 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SOCI_VERSION = 3.2.3
-- SOCI_ABI_VERSION = 3_2
...
x64\Debug\backend-loader.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi
/W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_7a48a.dir\Debug\\"
/Fd"cmTC_7a48a.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue "C:\Program Files (x86)\CMake\share\cmake-3.4\Modules\CMakeCCompilerABI.c"
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe /ERRORREPORT:QUEUE /OUT:"D:\devsrc\soci-3.2.3\build_64\CMakeFiles\CMakeTmp\Debug\cmTC_7a48a.exe"
/INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/manifest:embed /Debug
/PDB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.pdb"
/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:/devsrc/soci-3.2.3/build_64/CMakeFiles/CMakeTmp/Debug/cmTC_7a48a.lib"
/MACHINE:X86 /SAFESEH /machine:X86 /debug
cmTC_7a48a.dir\Debug\CMakeCCompilerABI.obj
I see /MACHINE:X86 in the link line above. Do I need to edit some SOCI config files or does SOCI already support VC 14?
Thanks,
john
---------------------------------------------------------------------
-
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
---------------------------------------------------------------------
-
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
----------------------------------------------------------------------
-------- _______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
Loading...