linking obj files compiled with LDC2 1.20.0 on Win64
realhet
real_het at hotmail.com
Tue Mar 31 12:54:20 UTC 2020
On Tuesday, 24 March 2020 at 15:22:19 UTC, Steven Schveighoffer
wrote:
> On 3/24/20 10:28 AM, realhet wrote:
>> On Sunday, 22 March 2020 at 20:20:17 UTC, Steven Schveighoffer
> If this were Linux, I'd start using nm to search the object
> files for the symbol that is missing (like search for symbols
> defining hasToString), and see if it possibly might be mangled
> in a different way. I'm not sure what tools there are on
> Windows to do this.
>
> -Steve
I've found a similar tool in MSVC, it's called DUMPBIN.
I was able to find that the linker errors were correct: I wasn't
able to find even smaller substrings of that
std.format.hasToString symbol, it was called like 4 times.
But I had a clue: A problem when trying to call hasToString on my
struct, so I located all the references for that and I've found
this thing:
//infoArray.enumerate.each!writeln;
//!!! LDC 1.20.0 win64 linker bug when using enumerate
here!!!!!
//foreach(i, a; infoArray) writeln(tuple(i, a));
//!!! linker error as well
//foreach(i, a; infoArray) writeln(tuple(i, i+1));
//!!! this is bad as well, the problem is not related to own
structs, just to tuples
foreach(i, a; infoArray) writefln("(%s, %s)", i, a); //this
works
Now I know that [LDC 1.20.0 win64 -allinst] has a problem
generating the code for tuple parameters in std.format calls.
This was not a problem in 1.6.0
Now I go on and try my bigger projects.
More information about the Digitalmars-d-learn
mailing list