status of shared libs
Maxim Fomin
maxim at maxim-fomin.ru
Mon Apr 8 05:27:20 PDT 2013
On Monday, 8 April 2013 at 11:21:07 UTC, Jacob Carlborg wrote:
> On 2013-04-08 11:51, Maxim Fomin wrote:
>
>> C main function need to be renamed or D main function should
>> be supplied
>> (then a program would start from C code, not D, but this is
>> not a problem)
>>
>> By the way, druntime links to _Dmain, but does not necessarily
>> forwards
>> to it.
>
> The C main function defined in druntime forward to the D main
> function. The C main function calls "_d_run_main" and passes in
> a pointer to the D main function. "_d_run_main" then calls the
> d main function. Indirectly the C main forwards to D main.
This is exactly why main() does not necessarily forwards to
_Dmain().
import std.stdio;
alias extern(C) int function(char[][] args) MainFunc;
extern (C) int _d_run_main(int argc, char **argv, MainFunc
mainFunc);
extern(C) int main(int argc, char** argv)
{
return _d_run_main(argc, argv, &bar);
}
void main()
{
writeln("D main");
}
extern(C) int bar(char[][] args)
{
writeln("bar");
return 0;
}
Guess what would happen.
More information about the Digitalmars-d
mailing list