|
I don't know why you're asking these ; it sounds like questions for a quite advanced C++ programmer, but still you can't answer them ?
anywayz :
1) you use inline functions whenever you want the function call to be replaced by its body. it saves the time of a function call, by which datas are passed through the call stack, but increases the size of your application. note that the telling a function to be inline will not always make it inlined. it's up to the compiler to decide of the complexity, then inline or not.
2) all the STL containers don't have contiguous elements, that's why simple pointers cannot work on the STL. BTW, iterators are defined to work as easy as pointers on their containers.
3) if you want a class to be final (not inheritable), make its constructors private...
|
|
|
|
|
Hi,
I have DllObjectDrawRuntime function defined in wwlib.lib. I successfully compiled the lib. I included the .h file in another project and using the function DllObjectDrawRuntime in one file. but on go to definition it is saying symbol undefined. I have another function DllObjectDraw in another file in the same wwlib.lib. and I am successfully calling that.
Any help is appreciated
Regards
|
|
|
|
|
subramanyeswari wrote: DllObjectDrawRuntime
How did you export that symbol?
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
|
|
|
|
|
how to export the function
|
|
|
|
|
it was a question you were supposed to answer in order to help us understand your problem...
BTW, can you post the exact error message returned by the compiler/linker ?
|
|
|
|
|
The way you did for DllObjectDraw . For instance writing an entry in the DLL 's *.def file ot using __declspec keyword. When you create a new DLL project, Visual Studio provides following code (in the DLL header file):
#ifdef YOURDLL_EXPORTS
#define YOURDLL_API __declspec(dllexport)
#else
#define YOURDLL_API __declspec(dllimport)
#endif
and automatically defines the YOURDLL_EXPORTS macro for the DLL project.
When you include such header in your client project, YOURDLL_EXPORTS is not defined and all works smoothly.
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
|
|
|
|
|
Did you link with the lib file ?
|
|
|
|
|
subramanyeswari wrote: I have DllObjectDrawRuntime function defined in wwlib.lib
is this a DLL?
BTW, posting the declaration and definition prototype and the type of project may be helpful.
|
|
|
|
|
I have a lib by bane wwlib.lib. In this lib i have a file dllobjdv.c and have a function like this
VOID
WINAPI
DllObjectDraw( HDC hDC, RECT r, HANDLE hMemInfo );
and i have a header in which i declared like this
VOID FAR PASCAL DllObjectDraw( HDC hDC, RECT r, HANDLE hMemInfo );
and in another lib drawlib.lib i am calling this function like this DllObjectDraw( hDC, r, obj->hMemInfo ); this is perfectly working.
I have another file dllobjvw.c in which i have another function VOID
WINAPI
DllObjectDrawRuntime( HDC hDC, RECT r, HANDLE hMemInfo, LPRECT lpUpdtRect )
and in the header i declared like this
VOID FAR PASCAL DllObjectDrawRuntime( HDC hDC, RECT r,
HANDLE hMemInfo, LPRECT lpUpdtRect);
and i am calling this in one of file of drawlib.lib like this
DllObjectDrawRuntime( hDC, r, obj->hMemInfo,cr );
on selecting go to definition of DllObjectDrawRuntime( hDC, r, obj->hMemInfo,cr ); it is displaying error undefined symbol.
Am i clear
|
|
|
|
|
do you get any linker or compiler error, other than the IDE helper "Goto Definition".
|
|
|
|
|
I am not geting any liner error or compiler error. but on the ide it is displaying symbol not foud. but one serious proble. on debugging it is skipping that function and placing the cursor on the next line
|
|
|
|
|
not sure, may be release build library or build without debug information can skip step in to function.
|
|
|
|
|
how will i be able to transfer data present in a dialog to a listbox in another dialog????
Raja
|
|
|
|
|
If (I assume you want to transfer data between dialogs of the same application) your dialogs are modal then you have to copy first dialog's data to some variable (or array of) and then fill the list box of the second dialog using the copied data.
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
|
|
|
|
|
yes the dialogs are of the same application and i get the error of undeclaredvariable in the second dialog,what should be done???
Raja
|
|
|
|
|
Mohanraj D wrote: what should be done???
Post the code.
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
|
|
|
|
|
str="data";
datatransfer on;
on.DoModal();
and this the listbox in another dialog box
List.AddString(str);
error C2065: 'str' : undeclared identifier
and i have included the header of the firstdlg in seconddlg
Raja
|
|
|
|
|
The scope of str must extend to both the dialogs (i.e. you can make it global or, better you may declare it in the parent window class (and the latter should provide accessor methods to).
Anyway, please have a look at this good (but underrated) toxxct's article [^].
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
|
|
|
|
|
is there anyother methods to do datatransfer,how is a globalvariable declaration done???
Raja
|
|
|
|
|
I strogly suggest you following the toxcct's article approach.
Anyway, using the global variable approach is simple:
(1) declare, in a common included header file, the variable as extern .
(2) define the variable only in one source file.
For instance, in your main header file (let's assume it is YourApp.h )
extern CString g_MyString;
and in the main source file, and only there (let's assume again it is YourApp.cpp )
CString g_MyString;
Now you can use g_MyString in any *.cpp file that includes the main header file (i.e. YourApp.h ).
You may find a working example of global variable in your sources, since Visual Studio generates code for the global variable theApp .
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
|
|
|
|
|
mmm, nice shortcut.
I had it defined in only one cpp as you said, but I was using "extern type var" everywhere I wanted to use it
Thanks for the trick
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
“The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson
|
|
|
|
|
|
|
Another way would be to store your application related information in the registry or in an ini file.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
Mohanraj D wrote: error C2065: 'str' : undeclared identifier
The error message tells it all. You have failed to declare str . Should be:
CString str = "data; But that does nothing to solve your original problem. Before calling DoModal() , you need to populate some variable that belongs to your datatransfer class (e.g., array, list, vector). You can either do this by accessing the variable directly, or implement some sort of "setter" method. Then in the OnInitDiaog() method of datatransfer , populate the listbox with the data.
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|