I want to use the DDEML library for dynamic data exchange with some arbitrary server, so I've written a small class that does this. The problem is that this class is written as unmanaged C++ but I want to take advantage of the nice .net CLI form environment so what are my options?
Can I make a library in unmanaged VC++ and use it in my CLI project ? Or what is the best/easiest solution? What do I need to think of?
Btw. I've already tried to make just that class unmanaged (no /clr) in the same project but that didn't work - should it (I get a lot of unresolved external symbols)?
Thanks for any input, feel free to be specific because this is my first CLI project
Add the native class to your main project, just like normal - no changes needed. You can then instantiate the native class and call its methods from your managed classes. Alternatively, you can integrate the functionality of the native class directly into a managed class. You can access the DDEML library just the same as you would from within a native class. That's what makes C++/CLI so cool for interop!
But on the target computer I have only one version:
And "depends.exe" tells me that my ManagedC++ library is using the other version:
Although both version are quite old (06/2006 & 09/2006) (i.e. it's probably not a recent windows update) I think this is the problem.
Now why is the linker is linking to the newer version?
How can I link to the older version?
here you can find path of the windows folder. In case windows is installed in diffrent partition or in diffrent folder. Then you can yust try to find if a file exists, then. But this can be only if 3rd party setup creator is supporting such scripts.
Or you can yust, make it run and then if users cancels, you contiune setup.
I have always thought that free was only used to 'free' memory that was allocated by malloc(), calloc(0, etc. I am looking at lrgacy code and viewing the use of free() to de-allocate a common pointer, not a pointer that was allocated by malloc(). I have found references that says for free(): if the argument does not match a pointer earlier returned by the calloc(), malloc(), [ADV] posix_memalign(), realloc(), or [XSI] strdup() function, or if the space has been deallocated by a call to free() or realloc(), the behavior is undefined. Are these statements correct?
Second question, this legacy code usually has more calloc() and malloc(0 calls that calls to free(). What can result from this? This legacy code is running on a real-time system.
Your question tells me that you're programming in C. This is the managed C++/CLI forum. There's no such thing as managed C, therefore, you're in the wrong forum. The Visual C++ forum is the closest we have to a forum for C questions.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog