I am working on an external C++ module to load SolidWorks with a specified Drawing, and then perform operations on it. A VB versoin seems to work ok, but from C++ (.net version 7.1.3088), I don't get valid returns from the OpenDoc6 call. The symptoms I see are that SolidWorks starts (appears in Task Manager), grows somewhat in memory usage when the OpenDoc6 call is made, but then exits after a few moments. The OpenDoc6 call returns hres of S_OK, zero values in the error or warning values, and a null value for the IModelDoc2 return pointer. Code snippet is as follows: CoInitialize(NULL); CComPtr<ISldWorks> swApp; CComPtr<IModelDoc2> swModel; HRESULT hres = swApp.CoCreateInstance(__uuidof(SldWorks), NULL, CLSCTX_LOCAL_SERVER); if (hres != S_OK) { cout << "Error starting a SolidWorks session. Exiting..." << endl; swApp = NULL; //release COM references CoUninitialize(); return 1; } long qErrs = 0; long qWarn = 0; hres = swApp->OpenDoc6( L"C:\tmp.SolidWorks\Tutor1.SLDDRW", swDocDRAWING, swOpenDocOptions_Silent | swOpenDocOptions_ReadOnly, L"", &qErrs, &qWarn, &swModel ); ... If I substitute get_IActiveDoc2 for OpenDoc6, and use an existing instance of SolidWorks, the sample code seems to work ok. Anybody else been successful in using OpenDoc6 from an external C++ app?