Я использую MinGW32 более конкретно TDM-GCC-32. Я очень простой проект, я связываюсь с одной пользовательской библиотеки, но эта ошибка выскакивает:«множественное определение` atexit »при связывании с DLL
>g++ -D_WIN32 -D_MINGW -lgdi32 -lgdiplus -Linterception/x86 -linterception main.cpp -o interceptor.exe
interception/x86/libinterception.a(dgnes00125.o):(.text+0x0): multiple definitio
n of `atexit'
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/5.1.0/../../../crt2.o:crt1.c:(.text+0x2c0):
first defined here
interception/x86/libinterception.a(dgnes00109.o):(.text+0x0): multiple definitio
n of `_onexit'
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/5.1.0/../../../crt2.o:crt1.c:(.text+0x2d0):
first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/5.1.0/../../../../mingw32/bin/ld.exe: C:/TD
M-GCC-32/bin/../lib/gcc/mingw32/5.1.0/../../../crt2.o: bad reloc address 0x20 in
section `.eh_frame'
collect2.exe: error: ld returned 1 exit status
Команды Я использую для создания библиотеки:
gcc -DINTERCEPTION_EXPORT -D_WIN32 -D_MINGW -shared -o interception.dll interception.c
dlltool -z interception.def --export-all-symbol interception.dll
dlltool -d interception.def -l libinterception.a
Я предполагаю, что я должен использовать различные варианты для составления библиотеки, чтобы избежать переопределения.
Я попробовал их, и это не решает мою проблему ... – lll
Вы должны улучшить свой вопрос, показывая альтернативы, которые вы пробовали. –
Попробуйте без '-D_WIN32 -D_MINGW', я ожидаю, что любые такие макросы будут встроены в сборку компилятора. –