Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualYours3!f

Posted 14 September 2013 - 10:46 AM

For communication between DLL's and EXE's using C++ a commonly used technique is to have virtual interfaces to systems, as this way you can pass around a pointer to a structure which holds the pointers to the interface of each sub system. This is the technique we used in Runtime Compiled C++ and it's also how the CryENGINE passes around interfaces using gEnv.

 

For a look at what a system table looks like see this file.

 

Exporting classes without using virtual interfaces is not simple in general, for an overview have a look at this post on codeproject. Using a virtual interface makes things alot easier - they don't have to be pure virtual but this does help to eliminate mistakes. Make sure to define a virtual destructor to prevent the memory created in one module being freed in another.

 

Feel free to use any of the code in RCC++, we use a liberal Zlib license and you can just use which-ever parts you need.

Thank you,
I'm actually using the rtcc++ (win32 alternate file watcher api, remember?), and I'm now at the implementation stage. I skipped the actual example (simpleexample) code, because it was a bit huge (the consoleexample wasn't though) tongue.png

I've actually read the codeproject article while googling, and I started to do something like that, but this seems a bit more organized.
So I guess I'll look into the SimpleExample now...


#2Yours3!f

Posted 14 September 2013 - 10:45 AM

For communication between DLL's and EXE's using C++ a commonly used technique is to have virtual interfaces to systems, as this way you can pass around a pointer to a structure which holds the pointers to the interface of each sub system. This is the technique we used in Runtime Compiled C++ and it's also how the CryENGINE passes around interfaces using gEnv.

 

For a look at what a system table looks like see this file.

 

Exporting classes without using virtual interfaces is not simple in general, for an overview have a look at this post on codeproject. Using a virtual interface makes things alot easier - they don't have to be pure virtual but this does help to eliminate mistakes. Make sure to define a virtual destructor to prevent the memory created in one module being freed in another.

 

Feel free to use any of the code in RCC++, we use a liberal Zlib license and you can just use which-ever parts you need.

Thank you,
I'm actually using the rtcc++ (win32 alternate file watcher api, remember?), and I'm now at the implementation stage. I skipped the actual example (simpleexample) code, because it was a bit huge tongue.png

I've actually read the codeproject article while googling, and I started to do something like that, but this seems a bit more organized.
So I guess I'll look into the SimpleExample now...


#1Yours3!f

Posted 14 September 2013 - 10:42 AM

For communication between DLL's and EXE's using C++ a commonly used technique is to have virtual interfaces to systems, as this way you can pass around a pointer to a structure which holds the pointers to the interface of each sub system. This is the technique we used in Runtime Compiled C++ and it's also how the CryENGINE passes around interfaces using gEnv.

 

For a look at what a system table looks like see this file.

 

Exporting classes without using virtual interfaces is not simple in general, for an overview have a look at this post on codeproject. Using a virtual interface makes things alot easier - they don't have to be pure virtual but this does help to eliminate mistakes. Make sure to define a virtual destructor to prevent the memory created in one module being freed in another.

 

Feel free to use any of the code in RCC++, we use a liberal Zlib license and you can just use which-ever parts you need.

Thank you,
I'm actually using the rtcc++ (win32 alternate file watcher api, remember?), and I'm now at the implementation stage. I skipped the actual example (simpleexample) code, because it was a bit huge, and maybe a readme on the actual game architecture would help there the lost ones :P

I've actually read the codeproject article while googling, and I started to do something like that, but this seems a bit more organized.
So I guess I'll look into the SimpleExample now...


PARTNERS