ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
LBLouis Bouchard30/07/2013

Hi,

I'm beginning a project for a stand-alone application in either C# or unmanaged C++, in VisualStudio 2012.  I am having trouble obtaining the handle of a solidworks instance.

I have tried the following in c#:

[...]

Type swType = Type.GetTypeFromProgID("SldWorks.Application");

ISldWorks app = (ISldWorks)Activator.CreateInstance(swType); // causes REGDB_E_CLASSNOTREG error

[...]

and in c++, I have tried this:

CLSID clsid;

HRESULT hres = NOERROR;

::CoInitialize(NULL);

CLSIDFromProgID(OLESTR("SldWorks.Application"), &clsid);

hres = swApp.CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER); // hres reports REGDB_E_CLASSNOTREG

[...]

... and this:

CComPtr<ISldWorks> swApp;

HRESULT hres = swApp.CoCreateInstance(__uuidof(SldWorks::SldWorks), NULL, CLSCTX_LOCAL_SERVER);// hres reports REGDB_E_CLASSNOTREG

[...]

So clearly, the code is not the problem, just one or more DLL aren't registered.

The version of SolidWorks I am using is actually an OEM version of SolidWorks that comes packaged with OptisWorks 2013 64bit.  I understand from the information I gathered that there are a few hoops to jump through when trying to work with x64 machines, and I have setup my VS projects accordingly, but it still doesn't work.

It seems I would have to manually register some DLLs with regsvr32, but which one(s)?  All of them? There are quite a few.  But even that fails: I have tried to register the file solidworks.interop.sldworks.dll, but it complains that 'the entry-point DLLRegisterServer was not found'.

I have always progammed in linux environments before, I am not very familiar with the inner workings of windows yet.

any help would be appreciated.

Louis