Help with moving MDL application to Ustn Connect - LinkageHeader structure not being found

Hello Everyone,

I am having trouble compiling the MT file to the R file. Below is the message from the BMAKE

The line number 40 in the .H file is "LinkageHeader lnkHdr"

[== Building C:\...\<appname>Linktyp.r, (C:\...\<appname>Linktyp.mt) ==]
rsctype @C:\...\AppData\Local\Temp\Bentley\MicroStationSDK\objects\make.opt
MicroStation Type Resource File Generator 03.17.02
C:\...\<appname>Attr.h(40) : error: bad struct/union definition: expected type
C:\...\<appname>Attr.h(40) : error: expected ,, got linkHdr
BMAKE: call trace
    line:   84, C:\...\<appname>.mke
Mon Apr 22 15:26:07 2019, elapsed time: 0:02

typedef struct userDataHeader
{
    LinkageHeader    linkHdr;
    DSIDataHeader    dsiHdr;
} UserDataHeader;

What Include file or update do I need to make so that the MT file can be compiled to .r file

Thanks

Peter

Parents
  • Hi Peter,

    Please refer to the MicroStation CONNECT Examples: circuit and/or scanfile.

    Both examples use an .mt in their project make files.  For the .mt file: #include <RmgrTools\Tools\datadef.r.h>.

    Note in MicroStation CONNECT the distinction has been made to ensure .h files should be true native platform .h compatible, and any .r.h files treated and used as "resource header" files purposes only. 

    Given that, the .mke file compiles the .mt file (e.g. circuit) occurs like below:

    circuit.mke:50:$(genSrc)$(sAppName)typ.r : $(baseDir)$(sAppName)typ.mt \

    In your .cpp file including (#include <Mstn\MdlApi\MdlApi.h>) which is somewhat analogous to prior MDL practice of including "msvars.fdf" to include a large variety of headers commonly needed.

    Lastly, in MicroStation CONNECT you may want to try to use: SDKSearch <SearchTerm> def.  Where "def" can be used to narrow/filter search results to the most common form of definitions for a given search term.

    HTH,
    Bob



  • Hello Bob,

    The Circuit and Scanfile examples have the LinkageHeader in the CPP file not the .H file which is included to provide structure def for the .MT file.

    If I add the includes identified I get the following error:

    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(46) : error: "This file is for C++ compilands only"
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(11) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(12) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(13) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(14) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(16) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(17) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(18) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(19) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(28) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(33) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(39) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(40) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(41) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(43) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(44) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(70) : warning: macro ENUM_UNDERLYING_TYPE previously defined as .
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(112) : error: can't open #include file limits.h
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(112) : error: No such file or directory
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: expected ;, got BENTLEY_NAMESPACE_NAME
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243): Exceeded limit for errors.
    BMAKE: call trace

Reply
  • Hello Bob,

    The Circuit and Scanfile examples have the LinkageHeader in the CPP file not the .H file which is included to provide structure def for the .MT file.

    If I add the includes identified I get the following error:

    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(46) : error: "This file is for C++ compilands only"
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(11) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(12) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(13) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(14) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(16) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(17) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(18) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(19) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(28) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(33) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(39) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(40) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(41) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(43) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/suppress_warnings.h(44) : warning: pragma not recognized.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(70) : warning: macro ENUM_UNDERLYING_TYPE previously defined as .
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(112) : error: can't open #include file limits.h
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(112) : error: No such file or directory
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: expected ;, got BENTLEY_NAMESPACE_NAME
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(239) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(240) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(241) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(242) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: Data declarations must be typedefs.
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: expected ;, got }
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: expected ;, got ::
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243) : error: bad declaration
    C:\PROGRA~1\Bentley\MICROS~2\include\Bentley/Bentley.h(243): Exceeded limit for errors.
    BMAKE: call trace

Children