|
thanks all
i got the method
I use the class in a global function
then i deifne the global function as export function
a beginner
|
|
|
|
|
alphaxz wrote: I use the class in a global function
then i deifne the global function as export function
If that's what you want. That's not the same as exporting a
function of a class. That's like using C++ without classes - C.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
WOW, C++ classes encapsulation with C global functions. Is that the C-nemesis pattern?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
We're not supposed to mention the C-nemesis pattern, are we?
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
It depends on the mood of the day.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Are you sure? It should go to James' post below.
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
I must have scrolled down too soon, before the post opened - sorry
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I prefer something like this, using __declspec(dllexport)/__declspec(dllimport)...
In a header file shared by both the DLL and other modules:
#if defined(BUILDING_MY_DLL)
#define MY_DLL_IMP_EXP __declspec(dllexport)
#else
#define MY_DLL_IMP_EXP __declspec(dllimport)
#endif
class MyClass
{
public:
MY_DLL_IMP_EXP int SomeFunc();
};
In the DLL code:
#include "MyClass.h"
int MyClass::SomeFunc()
{
return 12;
}
In the module importing the function
#include "MyClass.h"
MyClass mc;
int ret = mc.SomeFunc();
Add a define compiler option for BUILDING_MY_DLL (/D "BUILDING_MY_DLL") on the DLL project settings,
but not on any projects that use the DLL.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
This compiles on NET2003 but doesn't on NET 2005or 2008
typedef float floatArray __gc[];
public: __event void Mcs600_RawDataRDY( floatArray sampleSpectrum);
Error 1 error C2691: 'Mcs600CTL::Mcs600CTLControl::floatArray' : a managed array cannot have this element type c:\work\net2005\mcs600ctl\Mcs600CTLControl.h 143
__raise Mcs600_RawDataRDY(sampleSpectrum);
Error 2 error C2664: 'Mcs600CTL::Mcs600CTLControl::raise_Mcs600_RawDataRDY' : cannot convert parameter 1 from 'float __gc[]' to 'Mcs600CTL::Mcs600CTLControl::floatArray __gc[]' c:\work\net2005\mcs600ctl\Mcs600CTLControl.h 577
|
|
|
|
|
I'm not sure what you're trying to do there.
Are you still using the old managed extensions syntax?
Mark
p.s. This is the wrong board - this should be on the C++/CLI board
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi Mark:
I'm trying to pass a floating point vector back to the caller by raising an Event. I wasn't aware that there were new extensions syntax. I thought I had published it to the C++ board.
Thanks
Dan
|
|
|
|
|
Member 2021022 wrote: I wasn't aware that there were new extensions syntax
Starting with 2005 there's no more "managed extensions" to C++.
It's now formally C++/CLI. You can still build with the old pre-VS 2005 syntax by
setting a compiler setting, but that setting is deprecated and the new syntax is
a lot nicer anyway.
Under the new syntax, you could do something like this:
typedef array<float> floatArray;
...
floatArray ^farray = gcnew floatArray(10);
Member 2021022 wrote: I thought I had published it to the C++ board
You did, but there's a managed C++/CLI board as well
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
Anyone use large files? do you use the CRT or other functions? Anyone use Boost or other libraries for cross platform large file buffers? We're about ready to settle on our own cross platform standard for this, so just wondering how others are doing it?
_________________________
Asu no koto o ieba, tenjo de nezumi ga warau.
Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
|
|
|
|
|
|
I've been using CreateFile.
I know it's MS specific, but when i looked for a portable soln' (3yrs ago) there wasn't one. I also wanted/needed to integrate it with my IOCP code - also an MS specific tech.
If you don't want/need to use IOCP with file access, and you need x-platform, and the boost libs are robust/mature enough ... well not much choice then is there.
...cmk
The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.
- John Carmack
|
|
|
|
|
Hi, I created a program that takes in IR remotes codes and lets the user send them back out again. I also included the option of creating macros so you can put in fav channels and what not. I used two tree controls. One lists remotes and their buttons, the remote being the roots and the buttons being the leaves. The other lists the macros, the root being the name of the macro (a channel name or whatever) and the buttons for it are the leaves. I have arrays that contain the code put into the leaves data using the .SetItemData function. I just want to know how to save the items in the tree controls with their data and what-not. If anyone knows how or could point me in the right direction that'd be great, thanks.
~Samael
|
|
|
|
|
Hi Samael, if you want save the item data in a tree control you must loop on all the tree item and save data where do you want ( for example a .ini file ), you can do the same thing when you create the tree control to populate it with the saved items. Here in this example how to iterate all the elements of a tree ( in this case to delete them ).
void CMyTreeCtrl::DeleteAllChildren(HTREEITEM hParentItem)
{
if (ItemHasChildren(hParentItem) == FALSE)
return;
HTREEITEM hChildItem = GetChildItem(hParentItem);
while (hChildItem != NULL)
{
HTREEITEM hNextItem = GetNextSiblingItem(hChildItem);
DeleteAllChildren (hChildItem);
DeleteItem (hChildItem);
hChildItem = hNextItem;
}
}
|
|
|
|
|
I guess i should have clarified. I want to make it so you can save a custom named file. Like i go to click save and then i enter a name for a file then all the times in the tree is saved to the file. I've already used that code for transmiting multiple items in the tree. I just need to know how to save custom named files. Thanks.
modified on Wednesday, March 26, 2008 5:25 PM
|
|
|
|
|
I think that the simpler way for do it is, to obtain the custom name of the file using the CFileDialog class and then save your data using the WritePrivateProfileString, I hope to have understood what you have asked me.
modified on Friday, March 28, 2008 12:00 PM
|
|
|
|
|
I am writing an MFC MDI application and a non-MFC (regular) DLL. I want to gracefully handle cases where the DLL does not load. If the DLL is not present, everything is handled ok. However, in the DllMain function, when FALSE is returned from the DLL_PROCESS_ATTACH case, my MFC application has an unhandled exception (0xc0000142, Dll Initialization Failed).
What do I need to add to my MFC application to gracefully exit when the DLL initialization fails?
Thanks!
|
|
|
|
|
|
How are you binding to the DLL at runtime -
early (using a link library) or late (using LoadLibrary() at runtime)?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I am binding early (using an import library).
|
|
|
|
|