You should be able to call a dll function that calls other functions, this is not the issue. The thread which calls the dialog box must be apartment threaded. Since LabVIEW threads are initialized for a different thread model, a LabVIEW thread cannot directly call an MFC dialog. You would need to create a temporary thread, initialize it correctly, and then call the dialog box from this temporary thread. The original thread waits on the temporary thread to finish and then returns back to LabVIEW. This is similar to the way you would call an MFC dialog from TestStand. I have included an example that ships with TestStand which can be called from a LabVIEW Call Library Function. Its usually far easier to create your dialog boxes in LabVIEW than to work it this
way.