-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gcc/g++ compiled 32 bits dll doesn't work #10
Comments
gcc/g++ compiled Lexilla.dll does work. Its one of the most tested paths.
|
After testing x64 builds, I found that it doesn't have the |
Check the line endings of the
I've noticed that
As a guess, the fault could lie with Lines 87 to 92 in 6ee6b08
|
Added a chomp after the getline with 3377db1. |
@rdipardo Thanks for you help.
And please refer to BTW: |
Actually, Line 336 in 3377db1
Line 16 in 3377db1
Different types of functions calling are recognized/converted while compiling/linking with header files declaring. Line 87 in 3377db1
Line 27 in 3377db1
The saying "The __stdcall calling convention is used to call Win32 API functions" is for |
Here I added a CI testing file: lifenjoiner@a2c7523 You can see the failure: https://github.com/lifenjoiner/lexilla/runs/2648803500 |
And with lifenjoiner@a0a4cce, all work well: https://github.com/lifenjoiner/lexilla/actions/runs/868212808. |
A different calling convention would work but its necessary to have both the library and caller use the same calling convention so its specified. Since x64 has a common calling convention, you don't see failures there but on x86 calling convention mismatches can cause crashes. ILexer uses stdcall as stdcall is used for COM and interfaces like ILexer are similar to COM. Then, for consistency, the external lexer interface was stdcall as well. Lexilla extends the external lexer interface and it would be inconsistent for the new functions to use a different calling convention. |
Anyway, problems are there: reported, reproduced, proved, and patches provided. Also #6. I have finished my work. |
…causing failures with GetProcAddress.
clang is using Microsoft link which doesn't like |
Closed as change included in 5.0.3 release. |
The reason is that the exported stdcall function names contains
@n
suffixes.GetProcAddress
on the origin function name does not work.--kill-at
: https://sourceware.org/binutils/docs/ld/Options.htmlPatch:
Strip-stdcall-suffixes-from-exported-symbols-generated-by-MinGW-w64.zip
BTW:
Scintilla also needs it.
The text was updated successfully, but these errors were encountered: