• src/sbbs3/sbbsexec.vcxprojsrc/sbbs3/sbbs3.sln

    From Rob Swindell@VERT to Git commit to main/sbbs/master on Thursday, December 02, 2021 21:03:26
    https://gitlab.synchro.net/main/sbbs/-/commit/b15bd564ea29032bb0e5ecac
    Added Files:
    src/sbbs3/sbbsexec.vcxproj
    Modified Files:
    src/sbbs3/sbbs3.sln
    Log Message:
    Add sbbsexec.dll project (again)

    Regenerated for MSVC2019, the Synchronet virtual UART/FOSSIL driver (VDD) can be built from Visual Studio again (the makevdd.bat can probably go away now). I haven't had an MSVC project to build this DLL since the old MSVC 6.0 sbbsexec.dsp file.

    A few oddities about this project:
    1. xpdev files had to directly included/compiled in this project rather than linking with the xpdev_mt.lib because __stdcall calling convention is required for compatibility with ntvdm.lib and xpdev_mt.lib is built using __cdecl calling convention (the default). Rather than re-introducing the calling convention game-playing that I just recently removed (e.g. #define DLLCALL), just build the required xpdev files directly as part of this project. Perhaps there is a more elegant solution that I'll revisit later.

    2. The absolute path of my install Windows 10 SDK directories had to be specified (for include and library paths) to find vdd_svc.h and ntvdm.lib. Weird thing is that I didn't have to do anything hacky like this with the command-line/batch file build method. Again, there's probably a better solution I'm not seeing. But as is, this project might not build on other systems.

    So why use this rather than the brute-force batch file (makevdd.bat)? Well, this should be a little easier to get into CI/nightly builds and the resulting release build was 30KB (instead of 150KB), so that's good.

    Before:
    1AA00 size of code
    AA00 size of initialized data
    0 size of uninitialized data
    After:
    4C00 size of code
    2A00 size of initialized data
    0 size of uninitialized data

    Those default DLL project build options include some good optimization flags apparently.

    ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net