Developer forums (C::B DEVELOPMENT STRICTLY!) > Development

C::B Unable to start (0xc000007b) on win64/MinGW64 GCC 4.5.0

(1/4) > >>

tyeken8:
Just as the title says, I built the wxMSW 2.8.10 and 2.9.0 and C::B on both of them successfully (with minor hacks in C::B srcs, mainly for the 64-bit pointers),
but then I got a "0xc000007b" error while tried running codeblocks.exe, like this.

I found sth. on the M$ Technet and knews that it means "The application or DLL is not a valid Windows image".

And one of my friends, Thynson, an professional GCC player, says that "There's something wrong with the ld in GNU binutils, attach '--enable-auto-image-base' flag on the ld may do", I've tried, but it didn't works.

He said that "you may try to del all the resources and recompile it". I created a tiny dummy project and built like this, IT WORKS.

So I guess that the Original Correct Image Base was ruined by the ".rsrc" segment (but I can do nothing to verify it, my PEiD can't recognize the PE32+ format), so maybe we can solve this problem by re-permutation the segments (of course some automated tools Eg. ld || dlltools is better)?

BTW, the C::B SVN 6272 x86 by MinGW GCC 4.5.0(built by Thynson) works fine on my machine. I created a bundle and pasted it on the web, you can have a try if you want.
http://a.md/cb

Wating for reply online... Thx.

Propagator:
Did you make sure that your manifest file contains the line


--- Code: ---processorArchitecture="amd64"
--- End code ---

instead of the usual 32-bit


--- Code: ---processorArchitecture="x86"
--- End code ---

If you specify the wrong processor architecture, windows will load the wrong version of comctl32.dll (if I remember correctly) and you'll get exactly the error you reported. You can check with dependency walker what dll's are loaded by your application.

Hope that helps...

oBFusCATed:
I think C::B doesn't work on 64bit Windows...
See this topic: http://forums.codeblocks.org/index.php/topic,11567.0.html

Also I think C::B is crashing with wx2.9.x, so try wx2.8 first

thynson:
Actually I am not sure but just tell him to try '--enable-auto-image-base'. Now the problem is clear, the CodeBlocks use a manifest for x86 other than x64. I have replaced the manifest file 'wx/include/wx/msw/wx.manifest' with amd64.manifest. And we have began the process of build. Waiting for our good news, plz. :D

tyeken8:
Well, a good news and a bad news.

The lastest C::B (SVN 6284) was build SUCCESSFULLY

BUT the startup.script doesn't work correctly.

It gave me a "Push(): could not create INSTANCE copy (check registration name)".
Following the both startup.script and this error message, I found:
1. this problem occurs when running the script "GetScriptingManager().RegisterScriptMenu()"
2. there's sth. wrong in sqplus. but when I got into, I encontered a macro.


--- Code: ---#define DECLARE_INSTANCE_TYPE_NAME_(TYPE,NAME) namespace SqPlus { \
  inline const SQChar * GetTypeName(const TYPE & n) { return sqT(#NAME); } \
  inline void Push(HSQUIRRELVM v,TYPE * value) { \
...

--- End code ---

I can't determine the TYPE rapidly, so I go to you for help.
Are there any readymade solutions, or I have to work out with it?

Thx.

Navigation

[0] Message Index

[#] Next page

Go to full version