VB.Net을 사용하여 MetaTrader4 용 DLL을 만들려고합니다. 대부분의 예제는 C++에 있지만 VB.Net에서 수행 할 수 있습니다. C++보다 조금 더 까다 롭습니다.VB.Net을 사용하여 MetaTrader4 DLL 만들기
누구나 올바른 방향으로 나를 가리킬 수 있습니까? MT4_EXPFUNC __declspec (dllexport) 정의에 대한 내용
VB.Net을 사용하여 MetaTrader4 용 DLL을 만들려고합니다. 대부분의 예제는 C++에 있지만 VB.Net에서 수행 할 수 있습니다. C++보다 조금 더 까다 롭습니다.VB.Net을 사용하여 MetaTrader4 DLL 만들기
누구나 올바른 방향으로 나를 가리킬 수 있습니까? MT4_EXPFUNC __declspec (dllexport) 정의에 대한 내용
마침내 어떻게하는지 알아 냈습니다. 이상적인 솔루션은 아니지만 작동합니다. 저는 "미래 세대"를 위해 여기에서 문서화하고 있습니다.
기본적으로 관리되는 .Net 클래스 메서드를 직접 관리되지 않는 함수로 변환하는 DLLExporter.Exe라는 프로그램을 사용하고 있습니다. 그것은에서 내 VB.Net 코드의 http://www.codeproject.com/Articles/37675/Simple-Method-of-DLL-Export-without-C-CLI
샘플 : 위의 코드를 컴파일 한 후
Imports System.Runtime.InteropServices
Public Class myFXTrader
<DllExporter.DllExport()>
Public Shared Function storeFXRatesIntoSQL(
<MarshalAsAttribute(UnmanagedType.LPWStr)> pvsBroker As String _
, <MarshalAsAttribute(UnmanagedType.LPWStr)> pvsSymbol As String _
, <MarshalAsAttribute(UnmanagedType.LPWStr)> pvsTimeStamp As String _
, pviAsk As Double _
, pviBid As Double) As <MarshalAsAttribute(UnmanagedType.LPWStr)> String
Dim vsErrorCode As String = ""
'---------------------------------
Try
'... do some work here ...
Catch ex As Exception
End Try
'---------------------------------
Return vsErrorCode
End Function
End Class
, 난 그냥 DLLExporter myFXTrader.dll
실행하고 그것이 마술 할 것입니다. 결과 .dll 파일은 MT4의 라이브러리 폴더에 복사 할 수 있으며 #import
이 될 수 있습니다. 이 아웃이 같은 일을 시도 누가 누구든지 도움이 될 것입니다
#import "FXTrader.Exports.dll"
string storeFXRatesIntoSQL(string pvsBroker, string pvsSymbol, string pviTimeStamp, double pviAsk, double pviBid);
#import
int start()
{
Comment(storeFXRatesIntoSQL(AccountCompany(), Symbol(), TimeLocal(), Ask, Bid));
int err;
err = GetLastError();
if(err>0) { Alert(err); }
return(0);
}
희망 : 샘플을 아래 Expert Advisor
코드를 참조하십시오. 나는 이것을 이해하기 위해 꽤 많은 독서/연구를해야했다.
metatrader의 공식 예제는 찾을 수 없습니다. 그들의 지원은 항상 덜 도움이됩니다.
당신이 지적한 api는 실제로 C++이며, 네이티브를 의미합니다. 당신은 vb.net에서 뭔가를 쓸 찾고 있습니다. .Net은 관리되는 코드로 vb 또는 C# 또는 f #를 원한다면 네이티브 API 및 데이터 구조를 관리 대상으로 변환하는 변환 계층이 필요합니다.
C++/cli를 살펴보십시오. Cli는 네이티브 코드와 관리 코드를 동일한 어셈블리에서 혼합 할 수있게 해주는 프레임 워크입니다.
__declspec (dllexport)은 DLL의 사용자가 볼 수 있도록 코드에서 호출 할 수 있도록 네이티브 dll에서 내보내는 함수를 링커에 알리는 명령어입니다. 이와 같은 함수를 내보낼 때 그것은 여전히 기본 함수입니다.
관리자 또는 서버 API를 구현하려는 경우 확실하지 않습니다. 관리자의 경우 전체 API는 클래스에 있으며, 포인터는 관리자 dll이 내 보낸 유일한 함수에 의해 제공됩니다. 서버의 경우에는 dll을 서버에 플러그인으로 쓰는 것이므로 이론 상으로는 플러그인의 모든 함수를 내보낼 수 있지만 입력 및 출력 유형은 네이티브로 유지됩니다. 변환기를 작성하거나 내 보낸 함수에서 pinvoke를 사용하십시오. pinvoke에 대한 설명은 다음과 같습니다 http://www.codeproject.com/Articles/4965/Using-Platform-Invoke
어떤 경우에도 네이티브 C++ 코드를 작성해야합니다.
mtmanapi에 대한 거의 모든 액세스 권한을 제공하는 오픈 소스 프로젝트가 있습니다 : MetaTrader4.Manager.Wrapper.
그것은/CLI C++로 작성, 그래서는 정보를 원하시면 VB.NET에서
관리자 만 MT4 서버에 액세스 할 수있는 프로젝트가 아닙니까? 나는 그것이 MT4 클라이언트를위한 것이라고 생각하지 않았다. –
예, 관리자 액세스 전용입니다. – Uriil
감사를 사용하는 문제가되지 않습니다. 도움이됩니다. 그러나 나는 이미 그것을하는 방법, 이상이 아니라 대답을 발견했습니다. 내 대답을 보라. 환호했다. –