The static function compilation environment is the host?
    sdv 
    sdvcn at 126.com
       
    Fri Dec 31 00:08:00 UTC 2021
    
    
  
this code:
```d
#!/usr/bin/env dub
/+ dub.sdl:
     buildOptions "betterC"
+/
static pl1()
{
	class tc1{
	}
	auto vtc1 = new tc1();
	
	return vtc1.mangleof;
}
enum vpl1 = {
	class tc1{
	}
	auto vtc1 = new tc1();
	
	return vtc1.mangleof;
};
pragma(msg,pl1);
pragma(msg,pl1());
pragma(msg,vpl1());
version(D_BetterC)
{
	pragma(msg,"is betterC");
	extern (C) int main(int argc, char** argv) {
		return 0;
	}
}else{
	pragma(msg,"not betterC");
	void main()
	{
	}
}
for ldc2
```
dub build --compiler=ldc2
Performing "debug" build using ldc2 for x86_64.
wasm-runtime ~master: building configuration "application"...
_D3app3pl1FZ4vtc1CQqQoFZ3tc1
_D3app3pl1FZ4vtc1CQqQoFZ3tc1
_D3app9__lambda5MFZ4vtc1CQxQvMFZ3tc1
is betterC
Linking...
test.obj : error LNK2019: unresolved external symbol 
_D3app3pl1FZ3tc17__ClassZ referenced in function 
_D3app3pl1FNaNbNfZAya
test.obj : error LNK2019: unresolved external symbol 
_d_allocclass referenced in function _D3app3pl1FNaNbNfZAya
test.obj : error LNK2001: unresolved external symbol 
_D6object6Object8toStringMFZAya
test.obj : error LNK2001: unresolved external symbol 
_D6object6Object6toHashMFNbNeZm
test.obj : error LNK2001: unresolved external symbol 
_D6object6Object5opCmpMFCQqZi
test.obj : error LNK2001: unresolved external symbol 
_D6object6Object8opEqualsMFCQtZb
```
Should the environment in which the Pl1 function is compiled be 
the host environment or the target environment?
The result is correct during compilation,
linker errors occur in betterc mode
I think static functions should use the host environment
Symbolic links should not be used after the results are obtained
    
    
More information about the Digitalmars-d
mailing list