Support Board
Date/Time: Mon, 08 Jun 2026 09:09:27 +0000
Custom Study .dll does not release from Sierra Chart
View Count: 806
| [2023-01-23 18:30:42] |
| User900285 - Posts: 101 |
|
The issue is a minor one but thought I would share. I am working with a custom study that uses additional dependencies and I discovered that there may be something stopping this DLL from being released from Sierra Chart. Normally the Release All DLLs command from the UDP interface works. It works when compiling Sierra Chart Studies locally that do not have any additional dependencies. I did also try releasing this DLL using the manual method in the Build Advanced Custom Studies window. With this particular DLL, as soon the custom study is loaded on a chart, any attempt to replace the file does not work, even after attempting to release the DLL. Sierra Chart needs to be fully shut down in order to replace the DLL. This DLL depends on httplib with OpenSSL, urdl, as well as some boost libraries. |
| [2023-01-24 03:10:56] |
| Sierra_Chart Engineering - Posts: 23960 |
|
If that is the experience, then that is what is happening but we do not know why or have any control over this. This is controlled by the operating system. Sierra Chart Support - Engineering Level Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy: https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation For the most reliable, advanced, and zero cost futures order routing, use the Teton service: Sierra Chart Teton Futures Order Routing |
| [2026-06-03 20:27:34] |
| User166108 - Posts: 84 |
|
Sierra could add an extension so that there is a "scdll_Finalize" callback in the DLL extension so static objects/threads can be cleaned up outside of DLL main, and avoid loader lock issues (which is what will happen if you use threads in global objects like openssl, etc). I worked around it by using a reference counted singleton which works, but it requires a study be initialized to load the object in the first place. std::shared_ptr<GlobalObject> GlobalObject::instance() { auto sp = s_weak.lock(); if (!sp) { sp = std::shared_ptr<GlobalObject>(new GlobalObject()); s_weak = sp; } return sp; } You keep the shared_ptr in your study state and clear it on LastCallToFunction Date Time Of Last Edit: 2026-06-03 20:31:02
|
To post a message in this thread, you need to log in with your Sierra Chart account:
