[odb-users] Re: odb.exe: shared_ptr relationship error with VS 2017

Feiyun Wang feiyunw at yahoo.com
Mon Jul 16 01:47:52 EDT 2018


 Adding odb.exe option "--std c++14" will make it work.

Sincerely,Feiyun Wang
    On Sunday, July 15, 2018, 12:09:42 AM GMT+8, Feiyun Wang <feiyunw at yahoo.com> wrote:  
 
 Hi,
I got some error when running odb.exe with std::shared_ptr relationship with VS 2017.I have a header file Produce.h:````#pragma once#include <memory>
using std::shared_ptr;namespace orm{#pragma db object struct produce {#pragma db id auto int id;#pragma db not_null shared_ptr<struct factory> id_factory;#pragma db not_null shared_ptr<struct product> id_product; };}````And I have Building.h and Product.h which define factory and product respectively.
Pre-Build Event script runodb.bat:````@ECHO offSETLOCAL ENABLEEXTENSIONSset PATH=C:\build2\bin;%PATH%cd /d %~dp0where odb.exeECHO ===== Running odb.exe for MySQL MyISAMECHO INCLUDE=%INCLUDE%odb.exe -d mysql --mysql-engine MyISAM --generate-schema --at-once --input-name AllInOne --generate-query --generate-session --default-pointer std::shared_ptr Building.h Product.h Produce.hENDLOCAL````
Output:````1>------ Build started: Project: TestApp, Configuration: Debug x64 ------1>C:\build2\bin\odb.exe1>ODB object-relational mapping (ORM) compiler for C++ 2.5.0-b.81>Copyright (c) 2009-2018 Code Synthesis Tools CC1>This is free software; see the source for copying conditions. There is NO1>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.1>===== Running odb.exe for MySQL MyISAM1>INCLUDE=D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include;;D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\atlmfc\include;;D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\VS\include;;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\ucrt;;;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\cppwinrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\Include\um;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\Include\um;1>In file included from <command-line>:3:0:1>Produce.h(4,12): error GA1288207: 'std::shared_ptr' has not been declared1> using std::shared_ptr;1>            ^~~~~~~~~~1>Produce.h(13,3): error G99EEEB37: 'shared_ptr' does not name a type1>   shared_ptr<struct factory> id_factory;1>   ^~~~~~~~~~1>Produce.h(15,3): error G99EEEB37: 'shared_ptr' does not name a type1>   shared_ptr<struct product> id_product;1>   ^~~~~~~~~~1>D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(123,5): error MSB3073: The command "call ..\orm\runodb.bat1>D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(123,5): error MSB3073: :VCEnd" exited with code 1.1>Done building project "TestApp.vcxproj" -- FAILED.========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========````
The odb.exe version that I built was:````Revision: b093739baa9dd05e9578c3fbfb3283cdf468461eAuthor: Boris Kolpackov <boris at codesynthesis.com>Date: 2018/7/9 23:10:42Message:Regenerate options parsing code````with the following script:````ECHO ===== Installing odb-gccMD odb-gccb config.cxx=g++ config.cc.coptions="-O2" config.cli=C:\build2\bin\cli.exe config.import.libstudxml=libstudxml-gcc/ config.import.libcutl=libcutl-gcc/ config.install.root=C:\build2 "configure(odb/@odb-gcc/)"CD odb-gccb installCD ..````
BTW, it works well by replacing the shared_ptr with a raw pointer, like "const struct factory *" and "const struct product *".
Sincerely,Feiyun Wang

  


More information about the odb-users mailing list