Login Page - Create Account

Support Board


Date/Time: Sun, 28 Apr 2024 17:56:30 +0000



[User Discussion] - Different values in SC and VS during debugging

View Count: 1066

[2015-04-18 21:36:53]
zaza.pups - Posts: 3
I write simple dll with shared memory for one integer variable for testing calls functions from external dll from ASCIL dll and try to debug my ASCIL study with Visual Studio. I have differetn values in SC and VS. Can anyone help with this?
Date Time Of Last Edit: 2015-04-18 21:44:01
attachmentSC_External_Calls_Test.cpp - Attached On 2015-04-18 21:32:51 UTC - Size: 1.41 KB - 353 views
attachmentM_GV_d.cpp - Attached On 2015-04-18 21:34:00 UTC - Size: 394 B - 330 views
attachmentSharedDataSegment.h - Attached On 2015-04-18 21:34:21 UTC - Size: 184 B - 325 views
imageww.jpg / V - Attached On 2015-04-18 21:34:54 UTC - Size: 256.48 KB - 430 views
images.jpg / V - Attached On 2015-04-18 21:43:55 UTC - Size: 87.02 KB - 364 views
[2015-04-19 05:44:38]
ejtrader - Posts: 688
it appears like - result doesn't seem to be 1 anytime when called from scdll.

can you try to comment this line and see if the value is even being picked up atleast?

//  if(result == 1)

Date Time Of Last Edit: 2015-04-19 05:44:50
[2015-04-19 12:07:28]
zaza.pups - Posts: 3
Thanks for your feedback, ejtrader, you are right.
The reason for the debugging is that I had messages in a log "This Custom DLL study may cause Sierra Chart to be unstable until you remove the study from your chart and restart Sierra Chart."
Any dll, from wich one would like to call some functhion, should be plased to the SC Data folder, not system32 or another.


[2015-04-19 15:02:07]
ejtrader - Posts: 688
zaza - Here is a sample code you can use for this.


typedef int (__cdecl *SETINT)(int);
typedef int (__cdecl *GETINT)(void);

HINSTANCE hinstLib = LoadLibrary(TEXT("F:\\temp\\M_GV_d.dll"));

SETINT SetInt = (SETINT) GetProcAddress(hinstLib, "GV_SetInteger");
GETINT GetInt = (GETINT) GetProcAddress(hinstLib, "GV_GetInteger");

SCSFExport scsf_ExternalCallTest(SCStudyInterfaceRef sc)
{
SCSubgraphRef Volume = sc.Subgraph[0];

if (sc.SetDefaults) {
sc.GraphName = "ExternalCallTest";
sc.StudyDescription = "ExternalCallTest.";
sc.AutoLoop = 1;

Volume.Name = "Volume from Dll";
Volume.DrawStyle = DRAWSTYLE_BAR;
Volume.LineWidth = 2;
Volume.PrimaryColor = RGB(0, 255, 0);
sc.FreeDLL = FREEDLL;

return;
}

if (sc.LastCallToFunction) {
FreeLibrary(hinstLib);
return;
}

SetInt((int)sc.Volume[sc.Index]);
Volume[sc.Index] = GetInt();

return;
}

http://www.sierrachart.com/image.php?l=1429469107752.png

Date Time Of Last Edit: 2015-04-19 19:16:47
[2015-04-19 19:27:09]
zaza.pups - Posts: 3
Thank you, now I have no problems, but can't understand why sometimes studies couse "This Custom DLL study may cause Sierra Chart to be unstable until you remove the study from your chart and restart Sierra Chart." reaction of Sierra.
I attach my project, works good.
attachmentf.7z - Attached On 2015-04-19 19:27:04 UTC - Size: 1.51 MB - 359 views
[2015-04-19 19:29:03]
ejtrader - Posts: 688
try to use sc.FreeDLL = 0 and see if you still experience the custom dll issue.

To post a message in this thread, you need to log in with your Sierra Chart account:

Login

Login Page - Create Account