Question:
My problem is fairly trivial and simple, I am trying to write a packer and to do so I need to parse PE files, so I’m trying to use the C++ pe-parse library.I built it following the instructions and I’m now trying to link it to my simple
main.cpp
file:x86_64-w64-mingw32
) and my libraries also (pei-x86-64
for both pe-parse.dll
and pe-parse.lib
)When I run
nm
on pe-parse.lib
I am able to find the symbol. pe-parse.dll
does not contain any, and I tried to to replace -L.\bin\
with -L.\lib\
Any ideas ? I believe the
.lib
is an import library that has to be linked with the .dll
, but I can’t find a way to.Thank you.
Answer:
You have a library produced by MSVC and you are trying to use g++ to link with it.Microsoft C++ compiler is not compatible with g++. Objects produced by one of them cannot use objects compiled by the other. They use vastly different ABIs and different standard library implementations.
Your only option is to recompile everything with one compiler.
If you have better answer, please add a comment about this, thank you!