zyantific / zydis

Fast and lightweight x86/x86-64 disassembler and code generation library
https://zydis.re
MIT License
3.4k stars 434 forks source link

Amalgamated build should auto-define `ZYDIS_STATIC_BUILD` #498

Open ajmandourah opened 6 months ago

ajmandourah commented 6 months ago

Hey, i am new to cpp and i tried using the amalgamated files but I am getting a bunch of errors when compiling my dll

 warning C4273: 'ZydisDisassembleATT': inconsistent dll link
age
.
.
.
error C2491: 'ZydisEncoderEncodeInstruction': definition of
dllimport function not allowed

i have Zydis.c and Zydis.h in the src folder and I am including it as any file. I am also using cmake as follow.

cmake_minimum_required(VERSION 3.10.2)

set(CMAKE_CXX_STANDARD 20)

project(test)

include_directories(./src)
file(GLOB SRC_LIST ./src/*.cpp ./src/*.def ./src/*.c)
add_library(test SHARED ${SRC_LIST})

I tried looking arond hoping for guidance . Thanks

mappzor commented 6 months ago

I don't use amalgamated version but dllimport error suggests you forgot to define ZYDIS_STATIC_BUILD (#421, #370).

ajmandourah commented 6 months ago

I don't use amalgamated version but dllimport error suggests you forgot to define ZYDIS_STATIC_BUILD (#421, #370).

Thanks for the reply

I am still confused as from what i understood that the amalgamated files contains also zycore? its stated that I only need the src and the header file but still cant compile.

I will try to compile other way but i wish to use the amalgameted files for the ease of transfer

mappzor commented 6 months ago

ZYDIS_STATIC_BUILD is preprocessor definition. In CMake that would be add_compile_definitions(ZYDIS_STATIC_BUILD).

ajmandourah commented 6 months ago

you are a lifesaver. Thanks. it compiles now

athre0z commented 6 months ago

I think we should adjust the amalgamation script to automatically define those: I think it's safe to assume that pretty much no one will want to use the amalgamated sources to build a DLL. We can also offer ZYDIS_DYNAMIC_BUILD for these rare cases (specific to the amalgamated build).