josephspurrier / goversioninfo

Golang Microsoft Windows File Properties/Version Info and Icon Resource Generator
MIT License
837 stars 114 forks source link

rsrc merge failure: corrupt .rsrc section #39

Open AllenDang opened 4 years ago

AllenDang commented 4 years ago

C:/Tools/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: $WORK\b001\exe\a.out.exe: .rsrc merge failure: corrupt .rsrc section

The go generate command is //go:generate goversioninfo -64 -icon=./resource/pipeline.ico -manifest=./resource/PipeIt.exe.manifest

My platform is Windows 10 64bit with go version go1.13.5 windows/amd64

jonatino commented 4 years ago

Did you end up fixing this at all?

josephspurrier commented 4 years ago

I don't have a Windows machine handy unfortunately - can you post the files so we can reproduce?

josephspurrier commented 4 years ago

Is there any way you can post the minimal fully executable code for me to test with?

pitw commented 4 years ago

I have a similar problem. Created a test repo here: https://github.com/pitw/test-goversioninfo

ldstein commented 4 years ago

While I don't use goversioninfo, I did experience the same issue when generating syso files using rsrc on Windows 10.

.syso files generated with rcrc -arch amd64 -manifest main.manifest -ico main.ico -o main.rsrc leads to a failure: corrupt .rsrc section error during "go build".

However, .syso files generated with rcrc -arch amd64 -manifest main.manifest -o main.rsrc work fine.

I finally managed to resolve the issue by downgrading from TDM-GCC 9.2.0 to TDM-GCC 5.1.0-2.

Kudos to @Rodolfoag whose answer I found here.

@pitw Can confirm your test project compiles successfully using TDM-GCC 5.1.0-2.

tc-hib commented 4 years ago

Hello. rsrc has at least one bug : it doesn't align resources, while this seems mandatory (most tools can't read them properly otherwise) windres aligns them on 8 bytes.

Edit : Tried a quick and dirty fix on pitw's test repo. It worked.

go get github.com/tc-hib/goversioninfo/cmd/goversioninfo
go generate
go build

⇨ No error.

go get github.com/josephspurrier/goversioninfo/cmd/goversioninfo
go generate
go build

.rsrc merge failure: corrupt .rsrc section

ldstein commented 4 years ago

Nice, replaced github.com/akavel/rsrc with github.com/tc-hib/rsrc in my project. Now building successfully with TDM-GCC 9.2.0.

Thanks for the heads up @tc-hib

linquize commented 3 years ago

When having C code to compile (such as github.com/mattn/go-sqlite3) + resource.syso exists, this error may occur

tc-hib commented 3 years ago

@ldstein and others: if you are still using my fork please use the original one again as the bug has been properly fixed by akavel. I've developed my own tool too: https://github.com/tc-hib/go-winres

And I'd like to delete my forks of rsrc and goversioninfo as my quick fix was bad.

tc-hib commented 3 years ago

I'm sorry, looks like I talked a bit too early. Current version of rsrc still seems to require a bug fix.

josephspurrier commented 3 years ago

Just updated github.com/akavel/rsrc to v0.10.2. but as @tc-hib said, looks like there is still a bug.