|
Looks like you do not have #include <afxwin.h> in the stdafx.h.
You would also need to set Use MFC in a Shared DLL in Project -> Properties -> Configuration Properties -> General -> Use of MFC .
|
|
|
|
|
I was facing the same problem. error C2143: syntax error : missing ';' before 'variable'.
DEFINE_TYPE variable;
and it solve when i include the header file where DEFINE_TYPE is declared.
what is the type of m_evtComplete??
May be this will solve your problem.
I believe in LOVE AT FIRST SITE...
Bcoz I have loved my Mother...
even since I opened my eyes...(ICAN)
|
|
|
|
|
Hi
I am creating an Event in my windows application (.exe) I am trying to open this event in my RTOS application. The method provided by RTOS API is
::RtOpenEventA(EVENT_ALL_ACCESS ,false, "MyEvent");
This method fails to open event in RTOS application. Events are the kernel object, there will be some way by we can access these events in other application . Can you provide some breakthrough.
Thanks
|
|
|
|
|
Named events can be accessed across applications.
You should check the return value of the RTOS API and check what the error is.
I'm guessing it is a permission issue.
If you've not used named events before, I recommend you first try this using 2 Windows applications.
|
|
|
|
|
From what I understand about RTX, the RTX specific functions are similar to, but do not overlap the Win32 functionality. However, I believe you can still call the Win32 functions from withing your RTX specific program. In this case, you'd have to call OpenEvent().
|
|
|
|
|
First I want to say that I am 100 pages into Beginning Visual C++, so I have basically no exp. All of my programming has been VB, C# and if you are over on the PHP side you'll notice I'm starting that and not very good yet
Anyways, this is the problem we have where I work. We are moving from Visual Studio 6 to 2010 (slight jump) and are running into some problems with speed. For example I can write a app in VB to read from a database and put the data into a DataSet in about .4 seconds. To do a similar operation in C++ is taking 5 seconds (not .5 but 5).
VB Code is as follows to fill the dataset
sqlString = "SELECT * FROM attyesqs"
da = New SqlDataAdapter(sqlString, objConnection.cnn)
da.Fill(ds, "Debts")
If you know VB we are talking very simple and it works well.
However our other programmer who is trying to get similar performance out of a MFC app is running into the problem of it being 4.5 seconds slower. He is using a DSN and ODBC
not being familiar enough with C++ I don't know what part to post here, but the connection he is using is as follows:
CDatabase cd;
CRecordset sourcers(&cd);
CString DSNString = _T("DSN=dsnName;UID=user;PWD=password;"), SQLString = _T("SELECT AttyLastName, AttyFirstName FROM ATTYESQS");
I'm actually grabbing more columns in my query but that shouldn't matter much, I think it's only like 2 or 3 more. With VB and C# things have changed greatly in the last 10 years, is there now a better way to do this in C++/MFC? I can try to answer any questions you may have, and as always thank you in advance!
|
|
|
|
|
ADO .NET is fairly easy, although Visual Studio stops supporting Intellisense for C++/CLI with Visual Studio 2010.
LINQ is another option, but it's even more overhead since it's based on ADO .NET.
|
|
|
|
|
If I remember right the SQLConnection I'm using in VB is basically ADO? I've been doing some reading and from what I've been finding people are saying that DSNs are "now slower than dirt", is this the case or just a case of them not being used properly? If they dropped intellisense support for ADO am I to believe that this is something that is going to be gone in the near future and replaced with something else? Again new to this side of things so excuse my lack of knowledge. Thanks again.
|
|
|
|
|
I think they are not using them properly.
|
|
|
|
|
I've got a newbie question, you can set up an ADO connection like you would in VB/C# you don't have to use a DSN right?
|
|
|
|
|
OK - every time you connect to a database - doesn't matter how it occurs, it takes time to establish the connection and verify the user's credentials. That's problem #1.
So use pooled connections or keep the connection open.
The second problem is that every time you create a new SQL statement for execution, the DBMS has to check the syntax and evaluate an execution plan for that statement.
Therefore if you have a 'WHERE' clause in the statement, use a prepared statement (SQLPrepare?? -haven't used ODBC for 10 years).
Of course you can get over the second problem by using SQL procedure or function calls.
|
|
|
|
|
MacRaider4 wrote: However our other programmer who is trying to get similar performance out of a MFC app is running into the problem of it being 4.5 seconds slower.
I doubt that your analysis is correct.
You are presuming that it is the code itself that is causing the performance problem. I would suspect otherwise.
But then there are many details missing from your problem description.
For example is the total run time 1 hour, so it is 4.5 seconds longer than 1 hour? Or it is .1 seconds in VB and thus 4.6 seconds in C++?
Are you testing a single attempt in both applications?
Are you testing on the same box and using the same database?
At what point to you time the speed?
How do you time the speed?
Are you using ODBC in VB?
Did you validate the time by running the tests for both applications multiple times?
|
|
|
|
|
I have changed my VB app to use the same DSN that the C++ app is using and it is still faster. The only thing that is being done is grabbing 4,500 or so records and populating a datagrid. Our C++ programmer is convinced it's something with the network, but if that was the case both should run equally as bad. Both are being tested on the same servers and have been run well over 50 times and the VB one wins out every time. Now being a VB programmer I know this really should not be the case as VB has more overhead than a MFC application thus should be running slower.
As far as timing goes, we have both apps getting time stamps before and after the process starts. I don't have the code infront of me, but it is basically startTime -> Open the connection and query the database -> return the results to a recordset -> close the connection, endTime.
Now I can't remember for sure if we open the connection then do the startTime or before, but I do know both are the same.
|
|
|
|
|
MacRaider4 wrote: I have changed my VB app to use the same DSN that the C++ app is using and it is still faster
By VB you mean in .Net? .Net uses connection pooling. You can modify the url to disable connection pooling.
You didn't mention what 4.5 seconds was relative to. However there is no way that establishing a connection on a lan should take 4.5 seconds unless something is wrong with the infrastructure.
MacRaider4 wrote: As far as timing goes, we have both apps getting time stamps before and after the process starts. I don't have the code infront of me, but it is basically startTime -> Open the connection and query the database -> return the results to a recordset -> close the connection, endTime.
If it is in fact C++ itself then you should be able to create a test app with a simple table structure and exactly reproduce the results. If you cannot do that then it would demonstrate that there is some other problem.
If you can do it then posting the exact code here, of the test app, for both languages would be helpful.
|
|
|
|
|
Hi all,
in my sdi application i m using non dockable toolbar.
but the doted edge displayed on the left side of toolbar.
please tell me how can i remove this.
thanks in advance.
|
|
|
|
|
|
can someone give me a pointer/example how to integrate C code in a MFC C++ project
the C code (and object code) is not seen by the MFC project.
the C++ and C work correctly independently
using MS Visual Studeo 10
thanks
steve
|
|
|
|
|
You may freely integrate C code into a MCF C++ application.
Could you please be more detailed and precise about your problem?
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
[My articles]
|
|
|
|
|
Hi iain
on the C side: ive got a MS Visual Studio project in C. It uses a simple API
on the C++ side: ive got a MS Visual Studio project in C++ MFC that I use for the user GUI
I put the C header files in the C++ code using the extern "C" {...
there are two problems
1) I tried putting the C code in the VS MFC project... dosent work. obviously dosent compile the C code either
2) since the C code (and object code) is not there, there is a link error to the C API
C++ code call to the C xface "IRD_command_compile"
int cmd::reset_pin(void) {
sequence_number current_sequence_number;
int sequence_number = current_sequence_number.load_and_inc_Sequence_Number();
return IRD_command_compile(sequence_number,command_List_lib[RESET_PIN],NULL,NULL,&cmd_segment,EMM_payload_size);
}
thanks
steve
|
|
|
|
|
I'm Carlo, not Iain (neither Alfonso...).
Stevefigo2 wrote: I put the C header files in the C++ code using the extern "C" {...
You shouldn't need this.
Stevefigo2 wrote: there are two problems
1) I tried putting the C code in the VS MFC project... dosent work. obviously dosent compile the C code either
2) since the C code (and object code) is not there, there is a link error to the C API
"Doesn't work" isn't much descriptive. What are the issues?
Stevefigo2 wrote: C++ code call to the C xface "IRD_command_compile"
What is this?
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
[My articles]
|
|
|
|
|
Hi Carlo.. (sorry about that)
Ill try to be more descripive
1) I tried putting the C code in the VS MFC project using "add existing item" under the project properties... the VS MFC refuses to add the .c files. they should be displayed under the "Solution Explorer" tab, in the project name/"source files" folder. Since the .c files are not part of the project there is no compliation and no link
the "IRD_command_compile" is the C API call in the C++ code. something really simple.
thanks for the help
steve
|
|
|
|
|
I just made I test, adding a silly C file (and corrensponding header) to an existing MFC project. Visual Studio's 'add new item' worked fine (though I had to disable 'Precompiled Header' in project properties in order to make it compile).
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
[My articles]
|
|
|
|
|
if your c code is just ansi c, you may not be having any problems while integrating.
If u can Dream... U can do it
|
|
|
|
|
If you have the source, just drop them in the project. I've done this with legacy projects many times. I actually prefer to rename them to .CPP files so I can take advantage of some of the things of C++.
In reference to your above comment, I'm mystified why it doesn't work. I don't believe VS 2010 has such a restriction, though there may be an obscure setting for the .C files. (I just remembered: you can force the .C files to be compiled as C++. Perhaps they are by default.)
|
|
|
|
|