> Hello! > > > int main (int argc, char **argv) > > { > > argp_program_version = version; > > argp_program_bug_address = bug_address; > > > > argp_parse (&argp, argc, argv, 0, 0, 0); } > > > > /*** End modified argp example #2 ***/ > > > > If you compile the above version, you'll see that the --version option > > and bug tracker text are available. > > > > I'm sure this problem is familiar to developers and users of shared > > libraries, but I had forgotten it. I'll add a note to the Cygwin > > README file, to help all of us remember it next time. > > Yes, i know this. But looks like nobody actually follows your way, because > under Linux simple redefinition perfectly works. > Of course we could fix every program, but i have an idea how to make the > original Linux code working: > 1. Inside DLL we should rename this variables somehow > 2. Inside libargp.a.dll we should have a constructor function (with > __attribute__((constructor))) which assigns variables inside DLL with > contents of argp_program_version and argp_program_bug_address. > 3. Also inside libargp.a.dll we should have default definitions of these > variables with NULL contents. > > This way code modification would not be required any more. > I'll try to implement this when have more time.
Okay, well I agree that this sounds like a good solution. For now you have a workaround, and I'll be glad to consider a patch if you submit one. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple