I am currently facing a linking issue with Tracy (tag v0.10, I think the latest at the time of writing) compiled with Visual Studio 2019 (v142) using the VS solution located in library/win32/TracyProfiler.sln. I have a solution, also using Visual Studio 2019 (v142), with multi-DLL project profiling. When compiling my project, I get the following error message: error LNK2001: unresolved external symbol ___tracy_RtlWalkFrameChain. This error appears when I use any call stack-related macro, e.g.: ZoneScopedS(3) in one of my projects. But if I simply use a non-callstack-related Tracy macro, I do not get any issues and the profiling works perfectly.
I first investigated if the symbol is correctly exported in the DLL using the dumpbin /EXPORTS /SYMBOLS TracyProfiler.dll and dumpbin /EXPORTS /SYMBOLS TracyProfiler.lib commands. The symbol was found in both cases.
Output of command dumpbin /exports TracyProfiler.lib:
Output of command dumpbin /exports TracyProfiler.dll:
...
___tracy_RtlWalkFrameChain
...
I also checked several Visual Studio compiler options together:
I checked that both the Configuration (Release) and platform (x64) options were set correctly.
I disabled the Link-Time Code Generation /GL flag, as it is disabled in my projects. Related to that, I explicitly disabled the "Whole Program Optimization" in the project's Property Page > Configuration Properties > Advanced > Whole Program Optimization" and in Property Page > Configuration Properties > C/C++ > Optimization > Whole Program Optimization.
The Runtime Library option is set to /Multi-threaded DLL (/MD) in my projects and TracyProfiler.
The Calling Convention option is set to __cdecl (/Gd) in my projects and TracyProfiler.
Here are other possible root causes that I checked:
Name mangling: The usage of extern "C" is not necessary as it is used everywhere in the Tracy library.
Preprocessor definitions: I added TRACY_CALLSTACK even if it is unnecessary as the required symbol is already exported.
Has anyone ideas for further investigations? Thanks.
Hi everyone,
I am currently facing a linking issue with Tracy (tag v0.10, I think the latest at the time of writing) compiled with Visual Studio 2019 (v142) using the VS solution located in library/win32/TracyProfiler.sln. I have a solution, also using Visual Studio 2019 (v142), with multi-DLL project profiling. When compiling my project, I get the following error message:
error LNK2001: unresolved external symbol ___tracy_RtlWalkFrameChain
. This error appears when I use any call stack-related macro, e.g.:ZoneScopedS(3)
in one of my projects. But if I simply use a non-callstack-related Tracy macro, I do not get any issues and the profiling works perfectly.I first investigated if the symbol is correctly exported in the DLL using the
dumpbin /EXPORTS /SYMBOLS TracyProfiler.dll
anddumpbin /EXPORTS /SYMBOLS TracyProfiler.lib
commands. The symbol was found in both cases. Output of commanddumpbin /exports TracyProfiler.lib
:Output of command
dumpbin /exports TracyProfiler.dll
:I also checked several Visual Studio compiler options together:
Release
) and platform (x64
) options were set correctly.Here are other possible root causes that I checked:
extern "C"
is not necessary as it is used everywhere in the Tracy library.TRACY_CALLSTACK
even if it is unnecessary as the required symbol is already exported.Has anyone ideas for further investigations? Thanks.
Regards.