How to run a C++ code in Qt?
-
No, include them in your O_PS* files where suited.
-
@SGaist
I copied the "O_PSA .H" and "O_PS .CPP" code in the "mainwindow.h" and "main.cpp" of the Qt project respevtively. I did add ```#include <stdio.h>in either "mainwindow.h" or "main.cpp" files, but it gave the same errors
@Rela
It must have taken you ages to delete those names ... Anyway, to useostream,istreamand other streams from the standard C++ library, you actually need to include the corresponding headers -stdio.hsimply won't cut it. You need (depending on which classes you use) one of the *stream headers, e.g.#include <iostream>,#include <fstream>and so on. Additionally, these classes come in thestdnamespace so you'd need to expand that as well, for example.#include <iostream> using namespace std; // Only now the istream and ostream classes are available.Kind regards.
-
@Rela
It must have taken you ages to delete those names ... Anyway, to useostream,istreamand other streams from the standard C++ library, you actually need to include the corresponding headers -stdio.hsimply won't cut it. You need (depending on which classes you use) one of the *stream headers, e.g.#include <iostream>,#include <fstream>and so on. Additionally, these classes come in thestdnamespace so you'd need to expand that as well, for example.#include <iostream> using namespace std; // Only now the istream and ostream classes are available.Kind regards.
@kshegunov
There areusing namespace std; #include <iostream> #include <fstream> #include <ostream>in the "main.cpp" already. I added ```
#include <stdio.h>in each file, but it gave the same error.
-
@kshegunov
There areusing namespace std; #include <iostream> #include <fstream> #include <ostream>in the "main.cpp" already. I added ```
#include <stdio.h>in each file, but it gave the same error.
@Rela said:
There are ... in the "main.cpp" already.
But obviously these headers are not present in
mainwindow.h, whence the compile errors. The compiler doesn't know heck aboutostreamwhen processing themainwindow.hand it's whining ...Kind regards.
-
@Rela said:
There are ... in the "main.cpp" already.
But obviously these headers are not present in
mainwindow.h, whence the compile errors. The compiler doesn't know heck aboutostreamwhen processing themainwindow.hand it's whining ...Kind regards.
@kshegunov
Thanks. Do you know what else I can do except adding ```#include <stdio.h>to the "mainwindow.h"?
-
@kshegunov
Thanks. Do you know what else I can do except adding ```#include <stdio.h>to the "mainwindow.h"?
-
Add the aforementioned headers to the
mainwindow.h:#include <iostream> #include <fstream> #include <ostream> using namespace std;Otherwise the compiler will not know what
ostreamis. -
@kshegunov
Done, but here are the errors cleaned again ;)@Rela
I'm sorry but I have no idea what's happening, with the deletions and without a complete code snippet this is just turning into a guessing game. Not to mention the preprocessor directives, whose expansions I have no way of deducing. The errors have obviously changed and they are at compile-time, so focus on that and try to resolve the type mismatches. -
@Rela
I'm sorry but I have no idea what's happening, with the deletions and without a complete code snippet this is just turning into a guessing game. Not to mention the preprocessor directives, whose expansions I have no way of deducing. The errors have obviously changed and they are at compile-time, so focus on that and try to resolve the type mismatches.@kshegunov
The problem is not related to the code. The C++ code works properly in MV and also it worked in Qt creator before and gave the results in "Application Outputs" with Qt5.5 and MV 2013. The problem happened, when I start working with MV 2015 and Qt5.6 beta.
I just did the previous way and added all C++ files to the Qt project files. Do you have any idea about the ```error: dependent '..\C++' does not exist. -
@kshegunov
The problem is not related to the code. The C++ code works properly in MV and also it worked in Qt creator before and gave the results in "Application Outputs" with Qt5.5 and MV 2013. The problem happened, when I start working with MV 2015 and Qt5.6 beta.
I just did the previous way and added all C++ files to the Qt project files. Do you have any idea about the ```error: dependent '..\C++' does not exist.@Rela
I have never seen that error, but if I had to guess probably a folder can't be found byqmake. Inspect your project file, and make sure all folders/files exist. Then rerunqmakeand then do a full rebuild. Additionally, don't use backslashes for your paths when working withqmake, use *nix-style paths, for example:C:/somefolder/somefile.cpp -
Do you have something containing "C++" anywhere in your .pro file ?
-
@SGaist
Yes, I had something like this in PS8, because I added the C++ project header and source files through the "../C++ projects/po... /" path. But, now I removed the space of "C++ projects" (because maybe it makes problem), and changed the path withoutspace. PS10 Qt project .pro file is this
Now the error is this -
What is char.h?
-
@jsulm
It was#include <tchar.h>in the C++ code, but it had given the errors like
'void PS... (char *)': cannot convert argument 1 from 'const char [37]' to 'char *'and I changed it to "char".
I think its related to the main function in "main.cpp"int main(int argc, char* argv[]) { -
How is it related to main?
char is a native data type in C and C++, you do not have to include any header file to use it. So just remove this include.
This error:'void PS... (char *)': cannot convert argument 1 from 'const char [37]' to 'char *'You got probably because you're passing a const char string as parameter to a function which expects a non const char string:
void PS... (char *param); then you call PS...("a string");Do it like this:
char *param = "a string"; PS...(param); -
@jsulm
It was#include <tchar.h>in the C++ code, but it had given the errors like
'void PS... (char *)': cannot convert argument 1 from 'const char [37]' to 'char *'and I changed it to "char".
I think its related to the main function in "main.cpp"int main(int argc, char* argv[]) {'void PS... (char *)': cannot convert argument 1 from 'const char [37]' to 'char *'
The error is because you're passing
const char * constto a function expectingchar *and the compiler doesn't know how to (safely) convert the argument. My advice is: rework your function to accept non-mutable arguments if possible, if not - fix the type mismatch. @jsulm already pointed out that you shouldn't include headers you're not going to need, unless massive compilation times is something you're after.Kind regards.
-
Hi, the previous error was solved. I wanted to have a C++ code results in widget. For reminding in brief, I created a Qt widget project, and I added the C++ code including header and source files to the project. I copied the main.cpp C++ codes in the Qt main.cpp file.
The error was ```
void PS... (char *)': cannot convert argument 1 from 'const char [37]' to 'char *I changed the definition of the function:
void PS... (char *_sth)tovoid PS... (const char *_sth)and it doesn't give the error. But, now I want to have some values as result in Application Output , but instead of the non-zero values, they are all zero.
The input data are read from a model.txt file. The path of the text file was also added in the "project" > run of "Desktop Qt 5.6 MSVC2015 64 bit" > "Arguments". Do you know if it is related to the reading input data or not? -
How do you read model.txt file?
Is this file found?
Do you have any errors while reading it?
Why don't just debug and see what happens? -
How do you read model.txt file?
Is this file found?
Do you have any errors while reading it?
Why don't just debug and see what happens?@jsulm
In the code, it read using ```bool ReadModelData(istream &in, functionname &_PS) ... ... ReadModelData (fin,s) ...The path of the text file was added in the "project" > run of "Desktop Qt 5.6 MSVC2015 64 bit" > "Arguments". File path
When I debug it just show in the Application output:Debugging starts Debugging has finishedand when run the code the results are cpu=0 z=0 ... while they should be some non-zero.