[CONNECT U10 MDL] mdlBspline_extractCurve() is missing

Hi,

actually I'm migrating a V8i-MDL to Connect.

Linking my MDL App with mdlbltin.lib, results in a LNK2019 error, Symbol "__imp_mdlBspline_extractCurve" is missing.

This function is contained in msbspline.fdf, so compiling works fine, but mdlBspline_extractCurve() seems not to be compiled into Microstation. It is missing in the ustation.dll, when I open this file with the Visual Studio Dependency Walker.

I have to stroke a Bspline-Curve contained in an element descriptor. In my V8i-MDL I did this calling mdlBspline_extractCurve() first, filling in a MSBsplineCurve structure, and then call mdlBspline_evaluateCurve() to stroke the curve.

How is this task solved on Connect?

Tom

Parents
  • ,

    In addition to Jon's correct and helpful advice to start to move and improve your code using the new and robust C++ classes, you should still be able (for now until potentially deprecated) to use mdlBspline_extractCurve() given the following Header and Static Library referenced are included:

    C:\PROGRA~1\Bentley\MICROS~2\examples>sdkinc
    
    C:\PROGRA~1\Bentley\MICROS~2\include>s mdlBspline_extractCurve *
    Mstn\MdlApi\msbsplin.fdf:1274:MSCORE_EXPORT int      mdlBspline_extractCurve
    Mstn\MdlApi\msbsplin.fdf:1415:* @see   mdlBspline_extractCurve
    Mstn\MdlApi\msbsplin.fdf:3065:MSCORE_EXPORT int     mdlBspline_extractCurveNormal
    
    C:\PROGRA~1\Bentley\MICROS~2\include>sdklib
    
    C:\PROGRA~1\Bentley\MICROS~2\library>sb mdlBspline_extractCurve *
    mdlbltin.lib

    HTH,
    Bob



  • Bob,

    unfortunately I'm still not able to link my application; I assume my version of mblbltin.lib does not contain mdlBspline_extractCurve() (see my mblbltin.lib attached)

    Edit:

    unfortunately I'm still not able to link my application; I assume my version of mdlbltin.lib does not contain mdlBspline_extractCurve() (see my mdlbltin.lib attached)

    I installed

    ms10100023en_updt10.exe   and
    mssdk10100032en.msi

    Regards
    Tom

    mdlbltin.zip

    Edit

    I looked into the symbols defined in the library; mdlBspline_extractCurve() seems to be missing:

    F:\Users\Tom\Temp>dir mdlbltin.lib
     Datenträger in Laufwerk F: ist Users (820 GB)
     Volumeseriennummer: 6759-4D8D
    
     Verzeichnis von F:\Users\Tom\Temp
    
    07.08.2018  02:10         4.386.082 mdlbltin.lib
                   1 Datei(en),      4.386.082 Bytes
                   0 Verzeichnis(se), 337.336.811.520 Bytes frei
    
    F:\Users\Tom\Temp>dumpbin /EXPORTS mdlbltin.lib > symbols.txt
    
    F:\Users\Tom\Temp>findstr mdlBspline_extractCurve symbols.txt
                      mdlBspline_extractCurveNormal
    
    F:\Users\Tom\Temp>

  • I assume my version of mblbltin.lib

    Spelling: mdlbltin.lib not mblbltin.lib!

     
    Regards, Jon Summers
    LA Solutions

  • .  Let me check on the export definitions between the two libraries to see what publishing scope may have changed.  I will report back as soon as I can and if necessary, schedule to correct it in an upcoming release.

    Thank you,
    Bob



  • Jon,

    you are right. Sorry, that was a mistype by my touch system.

    I assume, the name stands for "Microstation Development Language built in library".

    I corrected the misspelling in my post above, to make it googelable.

    Regards, Tom

  • Bob,

    could you check the export definitions between the two libraries in the meantime?

    Will the function mdlBspline_extractCurve() be provided in the next upcoming release of CONNECT?

    Regards,
    Tom

  • Hi ,

    Sorry for not getting a response to this issue sooner as Artur and I discussed your SR 7000850984 today. We may be able to file a regression defect for the return of mdlBspline_extractCurve(), though we were able to find some Old/New MDL C API migration code for that exact function as a work-around.

    As mentions, ideally when migrating your code you will want to prefer using the New MDL C++ API classes as much as possible. In this case you should try to use the MSBsplineCurve class (vs. prior element typedef struct) whenever possible, then continue to use prior (though in need of update) MDL C API signatures for 1:1 migration where needed.

    As you can see below, it appears very little change is required and your output element will be an MSBsplineCurve where you can then access all point data needed directly from the instance.

    OLD

    MSBsplineCurve curve;
    memset (&curve, 0, sizeof (curve));

    mdlBspline_extractCurve (NULL, &curve.type, &curve.rational,

    &curve.display, &curve.params, &curve.poles, &curve.knots,

    &curve.weights, *ppED);

    NEW

    MSBsplineCurve curve;
    memset (&curve, 0, sizeof (curve));

    mdlBspline_convertToCurve (&curve, *ppED);

    If you find you need any other migration conversions, please feel free to Search and Post any new questions.

    HTH,
    Bob (and Artur)



    Answer Verified By: Tom Torell 

  • Hi Bob,

    thank you very much; this is exactly I was looking for. It works now!

    Regards,

    Tom

Reply Children