Viz Studio 2013 error when include MicrostationAPI.h

Hello,


After one full evening of research, I decided to post my nooby problem here. Basically, I just want to start a microstation project in Viz Studio 2013.

I had both include Microstation :

MicroStation\mdl\include
MicroStation\mdl\MicroStationAPI


Into the main file, I added

#define winNT
#include <MicroStation.API>
BEGIN_BENTLEY_NAMESPACE

That's all, but compiler returns me many error (14), these are the 4 firsts :

Error    1    error C2146: syntax error : missing ';' before identifier 'size_type'    c:\users\tom\bentley\microstation\mdl\include\memutilallocator.h    42    1    MdlTEST
Error    2    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int    c:\users\tom\bentley\microstation\mdl\include\memutilallocator.h    42    1    MdlTEST
Error    3    error C2146: syntax error : missing ';' before identifier 'difference_type'    c:\users\tom\bentley\microstation\mdl\include\memutilallocator.h    43    1    MdlTEST
Error    4    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int    c:\users\tom\bentley\microstation\mdl\include\memutilallocator.h    43    1    MdlTEST

Anyway, I cannot do anything, it's always wrong somewhere into these files.

Of course I checked all http://www.la-solutions.co.uk/content/Publications-MDL.htm#ArticleIndexDevTools, thanks Jon, but I couldn't find a solution.

Could you see what's wrong ??

Thank you and have a nice day

Tom

Parents
  • Unknown said:
    I just want to start a MicroStation project in Viz Studio 2013

    When writing a native-code C/C++ application, use the right version of Viz Studio!

    Unknown said:
    #include <MicroStation.API>

    No such object MicroStation.API!  If it's the header file you want to include, then do this...

    #include <MicroStationAPI.h>

     
    Regards, Jon Summers
    LA Solutions

  • Yes of course, MicroStation.h

    So I am probably using a wrong version, I will try with an old one.

  • Jan, your answer is pretty clear, thank you.

    My company uses this old version of Microstation, so I cannot change that.

    But, my question is, if I build a native windows application with a most recent version. Does my application need this specific version of Microstation to run or it can run on any similar windows ?

  • Unknown said:
    My company uses this version of Microstation [v8.05]

    You must use Viz Studio 6 SP3

    Unknown said:
    If I build a native windows application with a most recent version

    You must consult Microsoft sites, such as MSDN, to learn more about Viz Studio 6 and compatibility with Windows versions.  You need to install the Microsoft Windows Platform SDK for your chosen version of Windows.  Keep in mind that MicroStation V8.05 is not certified for use with the latest versions of Windows.

    Unknown said:
    Does my application need this specific version of MicroStation to run

    Yes: we say 'use Viz Studio 6' for your application because that is the version of C++ used to build MicroStation V8.05.  Later versions of MicroStation use later versions of Visual C++.  An application built using Viz Studio 6 is likely to differ substantially from the same application built using, say, Viz Studio 2005 for MicroStation V8i.

     
    Regards, Jon Summers
    LA Solutions

  • Welcome to the Bentley Programming forums.  As a tip, if you have (new) questions that are not directly related to the original (deviate), it is good practice to start a new Forum posts for each topic. This helps not only yourself find the final response/answer to a (single) particular question quickly, but all other forum members too.

    Unknown said:
    But, my question is, if I build a native windows application with a most recent version. Does my application need this specific version of Microstation to run or it can run on any similar windows ?

    You should always match:

    • Microsoft Visual Studio version required for a given version of MicroStation.  As Phil pointed out as a programmer you will want to review both the Product (version) Readme and MicroStation SDK ReadMe to familiarize your self with what has changed and may need to change in your application, along with any new/updated requirements.
    • MicroStation Product Version with the MDL SDK Version.  MicroStation 2004 was the last version of MicroStation to support delivering the MDL SDK directly with the product.  Since that time we have opted to keep the MicroStation download sizes (slightly) smaller and more easier to update by posting them on our Bentley Software Download site.
    • MicroStation Product Version with the Compiled MDL application using a given MDL SDK version.  Please see final note and example below.

    NOTE:  The MDL SDK version can safely drift only within the last part of the Version Quad; designated by .xx in this example:  08.11.09.xx.  If the version number varies in any of the first three parts of the Version Quad it is highly recommend that you:

    • Obtain the appropriate MDL SDK and Visual Studio version listed in the requirements
    • Modify any code if flagged by our compiler or mentioned in the Programmer Read me
    • Recompile your code with the matching MDL SDK
    • Make certain you do not induce any compiled MDL applications from older version of MicroStation into newer ones and vice-versa where the Version Quads are not suitable.  Mismatching compiled applications and Product Versions will likely destabilize your production environment with Exceptions/Crashes and a potential for loss of data.


    HTH,
    Bob



  • Fine, I understand everything you are telling me.

    I am a little bit desperate, my goal is really easy just open a DGN file, read the elements from it and close it, that's all

    Could you advice me a way to do that, any language ?

    Just I cannot use Visual C/C++ 6.0 because it doesn't exist anymore.

    I saw JMDL, especially this link : www.ad.ntust.edu.tw/.../overview.html

    But nothing about opening a file.

    Again thanks for your answers

  • What is your overall goal - what details from elements do you need, what format are you outputting that information as?  Have you considered MicroStation VBA (Alt+F11 like Microsoft Office products) based directly on the Microsoft VBA development environment?  This is a rapid development environment that provides a high degree of accessibility to MicroStation and Microsoft functionality and libraries.



  • If you MUST use MicroStation V8 2004 Edition (i.e. v08.05...) and you are using that release of MicroStation on an operating system that it was certified for use on, your best bet is to use pure MDL, which is delivered with the product. This would not involve anything other than that -- no Visual Studio, no Java, etc. Just do a complete install and the "SDK" is included in the ..\mdl\... area.

    BTW, the JMDL link you mention is for MicroStation/J... that has long since been removed from the product.

      

  • Unknown said:
    I saw JMDL

    Obsolete!  Do not use!  Read this article about MicroStation Development Languages

    Unknown said:
    I cannot use Visual C/C++ 6.0 because it doesn't exist anymore

    Only if you take out an MSDN subscription.

    MicroStation VBA

    Unknown said:
    My goal is really easy just open a DGN file, read the elements from it and close it

    MicroStation VBA is the answer.  It's delivered with all versions of MicroStation V8.  It works the same on all versions.  It's independent of problems such as compiler and operating system versions.

    Open a DGN file ...

    Sub OpenDesignFile()
        Application.OpenDesignFile "C:\folder\Laruve.dgn"
    End Sub

    Scan the active model...

    Sub ScanActiveModel()
        Dim oElements As ElementEnumerator
        Dim oCriteria As New ElementScanCriteria
        oCriteria.ExcludeNonGraphical
        Set oElements = ActiveModelReference.Scan(oCriteria)
        Do While oElements.MoveNext
            Dim oElement As Element
            Set oElement = oElements.Current
            Debug.Print "Element ID " & _
               DLongToString(oElement.ID) & _
               " type " & CStr(oElement.Type)

        Loop
    End Sub

     
    Regards, Jon Summers
    LA Solutions

  • Whao, great for these answers, I will check that tonight.

    Previously, I developed an windows application with that : http://dgnlib.maptools.org/

    It's working perfectly, but only for DGN v7. And now we need DGN v8, and that library is not able to open it.

    The main goal is to develop an application which (it could be perfect) runs on a computer without Microstation. The output is a txt file about the elements (text element for example). Imagine a dump into a human readable format.

    Am I clear ?

    Thanks for all your answers and time.

  • Hi Tom,

    Unknown said:
    It's working perfectly, but only for DGN v7. And now we need DGN v8, and that library is not able to open it.

    Yes, V8 is completely different than V7. And V7 was based on ISFF format, which was made public, so it was possible to write libraries to write and read the format. DGN V8 is a proprietary Bentley format without public description (but you can ask for the format description) and much more complex than quite simple V7.

    Unknown said:
    The main goal is to develop an application which (it could be perfect) runs on a computer without Microstation.

    It depends on your requirements. If you need 100% fidelity or at least to use some special features, the only way is to use MicroStation (or another application, which allow to create 3rd party applications) as an engine. But you can also try to use Teigha SDK from Open Design Alliance. It's developed outside Autodesk and Bentley, so there is no guarantee all features are supported, but it's the only independent alternative I know about.

    With regards,

      Jan

  • Unknown said:
    The main goal is to develop an application which runs on a computer without MicroStation

    Something else you might have mentioned earlier.  All the MicroStation development languages created by Bentley Systems assume and require that the MicroStation libraries are present and available.  The simplest way to ensure that those conditions are met is to build a DLL.

    None of the MicroStation development languages created by Bentley Systems can be used to create a stand-alone executable where MicroStation is not present.

    In other words, we cannot help you any further on this MicroStation Programming Forum.  Follow Jan's suggestion: contact the Open Design Alliance.

     
    Regards, Jon Summers
    LA Solutions

Reply Children
No Data