|
Is there any method to call C code from VC++/MFC project ?
I need to call some functions from a C project (pretty big project). If I include some files from that C project, I get some error:
precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)
moreover, I get a lot of unrecongnized types ... to modify types and functions in C project is huge work ... how can I overcome this ? Maybe you have been in the same situaton like me ...
|
|
|
|
|
Maybe that can help:
SO: Compile C files in C++ project which do not use precompiled header?[^]
Top-most answer presents some simple workarounds. If there are a lot of .c files in your project, disabling precompiled-headers solution-wide seems appropriate.
enum HumanBool { Yes, No, Maybe, Perhaps, Probably, ProbablyNot, MostLikely, MostUnlikely, HellYes, HellNo, Wtf }
|
|
|
|
|
I saw that post, I have tried all that solutions, I still have the same error ...
|
|
|
|
|
Strange. Maybe there are some leftovers from previous compilation sessions. Did you try to clean the solution and rebuild it completely? Does the error appear for all .c source files, or only for specific one(s)?
enum HumanBool { Yes, No, Maybe, Perhaps, Probably, ProbablyNot, MostLikely, MostUnlikely, HellYes, HellNo, Wtf }
|
|
|
|
|
It may possibly depend on how you are connecting the two. In general calling C functions from MFC/C++ presents no problems and works out of the box. Maybe if you showed some of the headers that you are including and the associated error messages we may be able to figure something out.
|
|
|
|
|
I have included C header and fix some errors, but I met another error:
MyDoc.obj : error LNK2019: unresolved external symbol _function1 referenced in function "public: int __thiscall CMyDoc::SomeMethod
MyDoc.obj : error LNK2019: unresolved external symbol _function2 referenced in function "public: int __thiscall CMyDoc::SomeMEthod
so, if I included xxx.c file, I got tones of errors ... if I added that file to my project, happen nothing, I mean I got the same errors ... what could be the next step ?
|
|
|
|
|
The linker errors are telling you that some file or object is missing from the build. Check where function1 and function2 are defined, and make sure that the file that contains them is included in your project..
|
|
|
|
|
Yes, I included, but I got the first error:
precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)
even if I did that settings in my VC++ app, I still have this error ...
|
|
|
|
|
You are using a previously built precompiled header so you need to force a complete rebuild of your project to ensure it is recreated with the current compiler and header files. Unfortunately most of this is guesswork as we cannot see the structure of your project(s). As I said earlier, calling C functions from C++ always works if you have the correct header and source/object files included.
|
|
|
|
|
_Flaviu wrote: ...even if I did that settings in my VC++ app What settings?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
|
That is irrelevant. You need to show us the actual details from your project. Whatever you are doing, or not doing, to cause these errors, we cannot help you without seeing some proper details.
|
|
|
|
|
It just occurred to me that you are probably suffering from C++ name mangling. You need to add the following lines to the header files of your .c code:
#ifdef __cplusplus // these lines at the beginning of the file before your definitions
extern "C" {
#endif
#ifdef __cplusplus // these lines at the end of the file after your definitions
}
#endif
|
|
|
|
|
(google-fu seems to be lacking today, and I'm certain I'm not asking or doing the right thing)
I have defined a UI in the resource editor with a Picture Control and assign a bitmap on it :
CONTROL IDB_BITMAP1,IDC_BACKGROUND_PICTURE,"Static",SS_BITMAP | SS_CENTERIMAGE,14,7,425,263
The problem is that sometimes (most of the time) the actual bitmap does not have the same size as the picture control.
Is there a way to know the actual pixel size of the Picture Control ?
Am I doing this the wrong way? or Am I forced to do this in code (get picturecontrol client size, and StretchBlt ... )?
Thanks.
I'd rather be phishing!
|
|
|
|
|
Maximilien wrote: Is there a way to know the actual pixel size of the Picture Control ?
You already set this size in the .rc file.
But if you mean the real image size... Well, first try to "play" with SS_REALSIZEIMAGE and SS_CENTERIMAGE flags.
If it won't help then try to owner-draw.
//edit: you could use GetBitmapDimensionEx function (wingdi.h) | Microsoft Docs to obtain bitmap size.
|
|
|
|
|
thanks.
will skip MFC and do it the good old way.
I'd rather be phishing!
|
|
|
|
|
Your problem has nothing to do with MFC! MFC is just a wrapper for plain Win32 API
|
|
|
|
|
You know the size of the picture control from the resource file. Or you can use GetWindowRect or GetClientRect to capture it at run time. You can then use StretchBlt[^] to display the bitmap at the appropriate size. Alternatively, depending on what else is in your view, you could resize the picture control.
|
|
|
|
|
thanks.
will skip MFC and do it the good old way.
I'd rather be phishing!
|
|
|
|
|
You can still do some of that in MFC.
|
|
|
|
|
Airport is divided to many Runways. Each runway has a mixed fixed delay amount of
time to keep a plane on runway. If airplane delay time > runway delay time than airplane
needs to take out from a runway, then it is considered as missed and starts from again
from a runway. You need to find out the minimum total delay for particular input. First
input line is number of runways. Second input line is delay of each runway.
Third input line is capacity of each runway to accommodate planes. Forth input line is
total number of planes. Fifth input line is maximum delay an airplane can afford. If it
exceed the runway delay time it is miss and it needs to start from again from a runway.
You need to show how you managed the runways as output as well.
Examples:(All are from user input)
5
2 2 3 5 7
2 2 2 2 2
8
1 1 1 1 2 2 3 3
Answer= 3
calculetion:(For another Example)
2 2 3 5 7 (runways delay times)
____________
1 1 1 5 3 (Air planes Delay times are less or equal
1 2 2 0 0 than runways delay)
__________
1sec -0 0 0 4 2
1sec -0 1 1 3 1
1sec -0 0 0 2 0
1sec -0 0 0 1 0
1sec -0 0 0 0 0
________________
Dealay Time=(1+1+1+1+1)sec
=5 second
Answer=5
|
|
|
|
|
When you posted this yesterday in QA: How to solve this problem[^]
You posted it together with two very different code fragments "you wrote" but couldn't get working, and were encouraged to use the debugger to fix them.
Now, you're posting the question again with no code and asking for an algorithm "to solve it".
We are more than willing to help those that are stuck: but that doesn't mean that we are here to do it all for you! We can't do all the work, you are either getting paid for this, or it's part of your grades and it wouldn't be at all fair for us to do it all for you.
So we need you to do the work, and we will help you when you get stuck. That doesn't mean we will give you a step by step solution you can hand in!
Start by explaining where you are at the moment, and what the next step in the process is. Then tell us what you have tried to get that next step working, and what happened when you did.
And please, don't tell us you "wrote the code" because it's pretty clear from yesterday's post that you found something on the internet and hoped it would magically meet all your homework criteria...
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
There's a pun somewhere in all of this, solve it!
|
|
|
|
|
- where are the planes at the start: somewhere at the airport, at a runway, or in the air?
- what are the times when planes are scheduled to arrive or take off? If not times, what is the order? If not order, is there any other restriction about the sequence?
- what does delay(?) time mean for a plane? Is it the maximum time it can wait at the airport, or remain in the air? If so, when does the time start counting? Or does that time only start ticking when on a runway?
- what does delay(?) time mean for a runway? What is it's effect? When does it start?
- what do you mean by runway capacity? Typically I'd say the capacity of any runway is exactly 1, as there can't be two planes on the same runway at the same time! But clearly you mean something else. Explain!
- the goal is to optimize a time for the airport - which time is that?
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
Do you work for Boeing?
The Master said, 'Am I indeed possessed of knowledge? I am not knowing. But if a mean person, who appears quite empty-like, ask anything of me, I set it forth from one end to the other, and exhaust it.'
― Confucian Analects
|
|
|
|