Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

Load NTDirect.dll from C++ library.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Load NTDirect.dll from C++ library.

    Hello.

    I try load NTDirect.dll from C# like this:
    Code:
    [DllImport("NTDirect.dll")]
    public static extern int Last(string instrument, double price, int size);
    and it work fine. How can i use NTDirect.dll from my C++ dll?
    I try this code:
    Code:
    typedef int(*last_func)(const char* instrument, double price, int size);
    typedef int(*conn_func)(int show_message);
    
    HMODULE nt_lib;
    last_func Last;
    conn_func Connected;
    
    
    BOOL APIENTRY DllMain(HANDLE hModule, DWORD  fdwReason, LPVOID lpReserved)
    {
    	char err_msg[10];
    
    	switch (fdwReason)
    	{
    	case DLL_PROCESS_ATTACH: // Подключение DLL          
    		nt_lib = LoadLibrary("NTDirect.dll");
    
    		if (!nt_lib) {
    			OutputDebugString("could not load the dynamic library");
    
    			sprintf_s(err_msg, "%d", GetLastError());
    			OutputDebugString(err_msg);
    
    			return FALSE;
    		}
    
    		//# resolve function address here
    		Last = (last_func)GetProcAddress(nt_lib, "Last");
    		if (!Last) {
    			OutputDebugString("could not locate the function");
    
    			sprintf_s(err_msg, "%d", GetLastError());
    			OutputDebugString(err_msg);
    
    			return FALSE;
    		}
    
    		//# resolve function address here
    		Connected = (conn_func)GetProcAddress(nt_lib, "Connected");
    		if (!Connected) {
    			OutputDebugString("could not locate the function");
    
    			sprintf_s(err_msg, "%d", GetLastError());
    			OutputDebugString(err_msg);
    
    			return FALSE;
    		}
    
    		break;
    	case DLL_PROCESS_DETACH: // Отключение DLL
    		break;
    	case DLL_THREAD_ATTACH:  // Создание нового потока
    		break;
    	case DLL_THREAD_DETACH:  // Завершение потока
    		break;
    	}
    	return TRUE;
    }
    ....
    const char* instr = "TEST";
    Last(instr, 200, 100);
    and it's not working.

    I have this error:
    Code:
    Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.  This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

    #2
    Hello Dzammer,

    Thank you for writing in. Unfortunately this is not supported. This thread will remain open in case any other users may be able to further assist.
    Michael M.NinjaTrader Quality Assurance

    Comment


      #3
      After reinstalling platform, this code worked fine, thanks.

      Comment

      Latest Posts

      Collapse

      Topics Statistics Last Post
      Started by Geovanny Suaza, 02-11-2026, 06:32 PM
      0 responses
      656 views
      0 likes
      Last Post Geovanny Suaza  
      Started by Geovanny Suaza, 02-11-2026, 05:51 PM
      0 responses
      371 views
      1 like
      Last Post Geovanny Suaza  
      Started by Mindset, 02-09-2026, 11:44 AM
      0 responses
      109 views
      0 likes
      Last Post Mindset
      by Mindset
       
      Started by Geovanny Suaza, 02-02-2026, 12:30 PM
      0 responses
      574 views
      1 like
      Last Post Geovanny Suaza  
      Started by RFrosty, 01-28-2026, 06:49 PM
      0 responses
      579 views
      1 like
      Last Post RFrosty
      by RFrosty
       
      Working...
      X