Dynatrace / OneAgent-SDK-for-C

Enables custom tracing of native applications in Dynatrace
https://www.dynatrace.com/support/help/extend-dynatrace/oneagent-sdk/what-is-oneagent-sdk/
Apache License 2.0
20 stars 3 forks source link

Missing dependencies #1

Closed vkbishnoi closed 6 years ago

vkbishnoi commented 6 years ago

Hi,

I am trying to use this SDK in our C++ application. Call to onesdk_initialize() is always failing with a return value of 126 which is "a specified module could not be found". When I open "onesdk_shared.dll" in Dependency Walker, It shows me multiple errors of missing dependencies. Few of them are API-MS-WIN-EVENTING-PROVIDER-L1-1-0.DLL API-MS-WIN-CORE-APIQUERY-L1-1-0.DLL EXT-MS-WIN-ADVAPI32-REGISTRY-L1-1-1.DLL

Also some more errors

Error: At least one required implicit or forwarded dependency was not found. Error: Modules with different CPU types were found. Warning: At least one delay-load dependency module was not found.

I am using a Widows 10 machine with Visual Studio 2015 installed on it. Also I have VC++ redistributable also installed.

pgroke-dt commented 6 years ago

Hi,

the errors that Dependency Walker shows you are false positives. Unfortunately Dependency Walker has been abandoned in about 2005 and doesn't support newer Windows features like API sets. See https://ofekshilon.com/2016/03/27/on-api-ms-win-xxxxx-dll-and-other-dependency-walker-glitches/ for some details.

If your application is able to start and call onesdk_initialize (even if onesdk_initialize then returns an error), it means you have every dependency that onesdk_shared.dll needs, otherwise you'd get an error from Windows when you try to start your application.

Now for why onesdk_initialize fails with error code 126, that is most likely because you don't have Dynatrace installed. When you call onesdk_initialize, the Dynatrace OneAgent SDK for C/C++ will try to load the actual agent code module that this SDK communicates with, which is part of the Dynatrace installation. So if Dynatrace is not installed it will of course fail.

Long story short: if you install Dynatrace, everything should work as expected.

Let me know if you have any further issues.

vkbishnoi commented 6 years ago

Hi, Thanks for your reply. I have DynaTrace OneAgent installed in my laptop. Version number is "Dynatrace-OneAgent-Windows-1.147.152". I can see the service up and running. Do I have to install something else as well for the SDK to work? Or set some path in environment variable??

ghost commented 6 years ago

Hi, Thanks for your reply. In the case Dynatrace OneAgent is already installed, please open a support ticket at https://support.dynatrace.com. In that way, we are able to analyze and track the issue with our support tools.

About your question: no, there is no need for additional libraries or any environment variable. First we need to analyze the logfiles from your system. For details checkout https://www.dynatrace.com/support/help/installation/setup-tips/where-can-i-find-oneagent-files-and-logs/.

edit: Please check also the troubleshooting section of the SDK.

BR Alram

vkbishnoi commented 6 years ago

Hi Alram, I can see lot of log files. Could you please tell me which one I should check for this issue?

-Vishal

ghost commented 6 years ago

Hi Vishal, All logfiles from the subfolders

are of interest for us. BR Alram

SonjaChevre commented 6 years ago

Hi Vishal,

we haven't heard from you in a while so I'm closing this ticket. Let us know if you need any additional help.

Sonja