June 3rd, 2013 by
By Daron Underwood
VP & CTO
Time to get a bit more technical today on a great topic – RTDLLs (Real-Time DLLs).
Recently I worked on a project to test some of RTX64’s functionality, reviving an unfinished project I’d written for the 32-bit RTX product a couple of years ago.
The original project’s goal was to provide the test functionality to our customers, but it had some sensitive code we did not want to share.
In that earlier project I had tested the RTX functionality by using an RTSS DLL, which provides DLL-like functionality to separate out code. Unlike a true Windows DLL, however, the export functions are global to the entire RTSS process space. This meant there were several steps required in order to use this approach, including making certain the RTSS DLL was loaded and running before trying to run the actual application that used it.
I considered using the RTDLL, which is more like a Windows DLL, however it too has limitations that make it different from how Windows DLLs are used.
Fast forward to our release of RTX64, which includes an image loader that allows it to do things much more like Windows user apps. In RTX64 an RTDLL can be implicitly loaded very much like one expects when writing a Windows program. This is an important and powerful feature.
With RTX64’s new and improved RTDLL, I decided to rework the old project to take advantage of it. With minimal effort, I moved the code from the RTSS DLL project to a newly created RTDLL project and built it.
I now had a lib file and an RTDLL file just like you would expect if building a Windows DLL and I was ready to make the changes to the application using the RTDLL instead of the RTSS DLL exports.
By simply adding the lib file to the path, and including the header file that defines the export/import functions, I was able to build the application.
I executed the application, the loader located and loaded the RTDLL and the application executed exactly as expected.
It was straightforward and felt just like developing a Windows application, which is what we strive for with RTX and RTX64.