|
I'm sorry for being unclear, what I mean is this:
A firewall's purpose is to prevent a PC from listening on any unopened ports. There is no way to programmatically get past a firewall that has a port closed; that's what firewalls are for, that's what they do, they do not let you host a connection on an unopened port. Your PC can't listen on a port blocked by a firewall? Good. That's the way it's supposed to be, if it COULD host a connection, it would mean your firewall was not functional.
To get your program to work from a computer with a firewall, you need to either open the port you're using in the firewall settings on that computer, or you need to run another instance of your program on a separate computer as a proxy, and use that as a server.
|
|
|
|
|
I have a DLL which was written as an MFC Extension DLL -- no CWinApp-derived class, and a DllMain function. I'm making changes to the DLL and would like to convert it over, and give it a CWinApp. What do I need to do besides moving the DllMain code into the InitInstance and ExitInstance overrides, and removing the _AFXEXT preprocessor define? I did those things, and the DLL builds fine; but when I attempt to load it in an application, an assert statement fails inside the CWinApp constructor -- the assert is,
ASSERT(AfxGetThread() == NULL);
-- AfxGetThread() is returning a pointer to theApp, which is the globally defined instance of the class I derived from CWinApp. Who modifies the module state before the CWinApp constructor is called?
|
|
|
|
|
Do you call AFX_MANAGE_STATE before call dll?
|
|
|
|
|
No -- this crash is occuring before any calls, when the DLL is loaded.
|
|
|
|
|
Sorry -- a misstatement. The crash occurs when the main application's CWinApp is being constructed, because the module state is already pointing to the DLL's CWinApp object.
|
|
|
|
|
My addvice don't try to figure out what the difference in the keys between the MFC ext and regular MFC dll. If you will do two empty projects one with MFC ext another regular MFC dll and take a look in Windiff what is the differences you will see that there is lot of stuff is different in dsp/vcproj
Better create new MFC regular dll move your code there and don't and keep CWinApp derived class untouched after wizard.
It is possible that you missing one of some precompile defenitions, but again figuring out could take a lot of time.
|
|
|
|
|
And the answer is: Not only do you need to remove the _AFXEXT define, you also need to add a _USRDLL define. Do those two things and it will work fine.
Bonus hint, regarding AFX_MANAGE_STATE: you apparently need to invoke this not only at the top of your exported functions, but also at the entry point of any worker threads you create that will use MFC functionality.
|
|
|
|
|
Hi,
A worker thread is running the threadproc. While it is running i want to send some data to it from main thread. How to do this?
Thanks in advance.
jagadeesh
|
|
|
|
|
|
There are several methods to do this:
1) Use a global variable that stores the data you want to send to the worker thread;
2) Use a singleton;
3) Use files;
I'd go with a singleton, that seems the be the most 'clean'. Remember to synchronise your data, since it will most likely be accessed by multiple threads (avoid corrupt data!).
There are probably some other methods you can use.
Er zit een korstje op mijn aars.
|
|
|
|
|
using Global variabe works simply.....
v
|
|
|
|
|
Since the thread does not have a message pump, using PostMessage() is out of the question. I think you are left with synchronization and events at this point.
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
Hi,
I've heard it's possible to do something like this,
struct Data myData =
{
{ #include "myData.dat" }
}
Or something like that... to include information from a file directly into a struct. My question is, what is the proper format for this, and how do I format the file so that it reads in correctly? Let's say my struct has 3 integers and a string, do I then have to have 3 integers and a string on each line of the file, separated by commas or something? Or what?
Thanks!
|
|
|
|
|
the #include preprocessor directive copies the content of the file in parameter at the place it is written. so, your code would work i think. but, i doubt the rounding { } are necessary.
however, the content of the myData.dat should be containing a correct C++ code that defines a structure...
struct Data {
#include "myData.dat;
} myData;
myData.dat :
private:
int m_i;
char m_c;
public:
Data();
~Data();
TOXCCT >>> GEII power [toxcct][VisualCalc]
|
|
|
|
|
Right, actually what I need is the information to be included in a struct array rather than the struct definition itself, but the same principle should apply. Thank you.
|
|
|
|
|
IMO, anyone coding like that should be fired.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Maximilien wrote:
anyone coding like that should be fired
yes... of course !
actually, i don't really understand the point why he tries to code this way ; i just answered consequently...
TOXCCT >>> GEII power [toxcct][VisualCalc]
|
|
|
|
|
Using that method was my directive. If you understood the context and objectives you might see things differently. I can't talk about it since it's a military system.
|
|
|
|
|
i didn't see anything, i didn't heared anything...
... and you already told too much (we don't need to know you work on a confidential project or not)...
TOXCCT >>> GEII power [toxcct][VisualCalc]
|
|
|
|
|
Software is software. You have good and solid software designs and bad software designs. Anyone who designs software like that, should go to school again. Any programmer who doesn't complain about such IMHO horrible design should go to school with the designer...
Behind every great black man...
... is the police. - Conspiracy brother
Blog[^]
|
|
|
|
|
Thank you for helping to perpetuate the belief that all computer scientists are elitist and arrogant and jump to conclusions about others' intelligence and skills based on their own lacking information and experience.
Anyway... to the original poster:
You're including actual data with this design, right? You're not trying to include compiled code from another file? It's basically just a data table that you have as an external file?
|
|
|
|
|
Maximilien wrote:
IMO, anyone coding like that should be fired.
No, it's sometimes (rarely) necessary for large table structures.
|
|
|
|
|
It's not necessary to do such horrible things. Especially for large table structures! If you have a very large table structure, one should redesign the class into smaller reusable classes and create a utility that combines the functionality. Thats one demand for a good design.
Behind every great black man...
... is the police. - Conspiracy brother
Blog[^]
|
|
|
|
|
The simple fact that you would criticize the code, designer, and developer without knowing the context is laughable. This code is necessary in this case. I have never used it before, but it is the only way to meet all the requirements for this piece of software at this time. Anyone who thinks this type of design is never necessary is clearly not experienced in a wide enough variety of software to have been required to use it before. Your comments are rude, uncalled for, and altogether ignorant. Get your facts together, all of you in this thread who are criticizing, get your facts together before you jump on someone's case about a software system that you have no knowledge of whatsoever.
If you have nothing useful to say, then say nothing. I have been asking and answering questions on this BBS for years, and I've never seen such unbased arrogance here before. I hope to never see it again.
|
|
|
|
|
Hello,
I apologize for my rudeness. Indeed, should not critisize people I don't know on something I don't understand. I have experiance in including stuff at places where it shouldn't be included.
I once had to hide some details that I included. One solution was to create a "private" namespace and include the header there, which was the most horrible mistake I ever made. Not only did it not solve my problems, but it created many more. Bad maintanability is one, lot's of compiler errors are another.
After giving it some more thought, I insulated the details from the physical interface and I included the file in the source file, not the header.
I know that there are many solutions to one problem, and that one solution is always better than another. I also don't know what you are trying to achieve, but since you know that it can be done, I hope that you are happy with the solution.
Again, I apologize for my rude post.
Behind every great black man...
... is the police. - Conspiracy brother
Blog[^]
|
|
|
|