Studio 2017이 있는 경우 이전 스튜디오에 대한 이 지침을 보고 있으며 무엇을 어떻게 수행할지 병합하지 않은 경우 먼저 이 문서를 읽는 것이 좋습니다. https://docs.microsoft.com/ru-ru/ cpp/build/walkthrough-create-and-using-a-dynamic-link-library-cpp?view=vs-2017
그런 다음, 위 기사의 예제와 유사한 이미지로 dll을 이미 생성하고 클라이언트 애플리케이션에서 테스트한 경우 2번 지점부터 "그리고 MQL5 프로그램에서 설명된 그리고 다음과 같이 호출했습니다." 즉, mt5에 작성된 대로 mt5에 dll을 선언합니다.
다음은 Visual Studio 2012 C++ 코드입니다. cpp 확장자 포함(main.ssr)
#define MT4_EXPFUNC __declspec(dllexport) создал макрос чтобы не писать запись __declspec(dllexport) int __stdcall add( int a= 0 , int b= 0 )
//__declspec(dllexport)int __stdcall add(int a=0, int b=0)и так пробовал тоже
MT4_EXPFUNC int __cdecl add( int a= 0 , int b= 0 ) //stdcall данная примитивная функция ничего не делает а просто возвращает значение 18
{ return ( 18 );пробовал так return18 ;}
다음 으로 내보낸 함수목록이 있는 기본 확장자가 def(main.def)인 파일을 만들었습니다. 코드는 다음과 같습니다.
LIBRARY "dllmt42"
EXPORTS
add
다음으로 컴파일러는 import
#import "dllmt42.dll"int _add( int a= 0 , int b= 0 );
#import
컴파일에는 문제가 없지만 어드바이저를 차트에 놓으면 버그가 뜬다
해결되지 않은 가져오기 함수 호출, 'dllmt42.dll'에서 '_add'를 찾습니다. Total Commander는 파일을 끌 때 함수를 컴파일러 자체로 봅니다.
누가 도움을 줄 수 있습니까? 오류 문제를 해결하는 방법, 올바른 기능 내보내기를 저장하고 담당하는 .def 확장자를 가진 파일이 어떻게 있을 수 있습니까?
예, 문제는 스크립트가 방금 충돌했다는 것입니다. 그 후 오류 코드를 어떻게 볼 수 있습니까? 아니면 다음 시작에서 즉시 읽을 수 있습니까?
원칙적으로 64x 에서 dll을 컴파일하여 문제를 해결했습니다. 사실, 다른 오류가 나타나기 시작했지만 더 이상 중요하지 않습니다. 일반적으로 c/c++에서 라이브러리를 빌드하고 mql5에 연결하는 방법을 이해해야 했습니다. 귀하의 예는 이제 잘 작동합니다.
Studio 2017이 있는 경우 이전 스튜디오에 대한 이 지침을 보고 있으며 무엇을 어떻게 수행할지 병합하지 않은 경우 먼저 이 문서를 읽는 것이 좋습니다. https://docs.microsoft.com/ru-ru/ cpp/build/walkthrough-create-and-using-a-dynamic-link-library-cpp?view=vs-2017
그런 다음, 위 기사의 예제와 유사한 이미지로 dll을 이미 생성하고 클라이언트 애플리케이션에서 테스트한 경우 2번 지점부터 "그리고 MQL5 프로그램에서 설명된 그리고 다음과 같이 호출했습니다." 즉, mt5에 작성된 대로 mt5에 dll을 선언합니다.
이것이 내가 내 문제를 해결한 방법입니다.
매크로 형식의 C++와 MQL 간의 유형 관계 목록을 원합니다.
#define MQL_STRING wchar_t
다음은 Visual Studio 2012 C++ 코드입니다. cpp 확장자 포함(main.ssr)
다음 으로 내보낸 함수 목록이 있는 기본 확장자가 def(main.def)인 파일을 만들었습니다 . 코드는 다음과 같습니다.
LIBRARY "dllmt42" EXPORTS add
다음으로 컴파일러는 import
컴파일에는 문제가 없지만 어드바이저를 차트에 놓으면 버그가 뜬다
해결되지 않은 가져오기 함수 호출, 'dllmt42.dll'에서 '_add'를 찾습니다. Total Commander는 파일을 끌 때 함수를 컴파일러 자체로 봅니다.
누가 도움을 줄 수 있습니까? 오류 문제를 해결하는 방법, 올바른 기능 내보내기를 저장하고 담당하는 .def 확장자를 가진 파일이 어떻게 있을 수 있습니까?
다음은 Visual Studio 2012 C++ 코드입니다. cpp 확장자 포함(main.ssr)
다음 으로 내보낸 함수 목록이 있는 기본 확장자가 def(main.def)인 파일을 만들었습니다 . 코드는 다음과 같습니다.
다음으로 컴파일러는 import
컴파일에는 문제가 없지만 어드바이저를 차트에 놓으면 버그가 뜬다
해결되지 않은 가져오기 함수 호출, 'dllmt42.dll'에서 '_add'를 찾습니다. Total Commander는 파일을 끌 때 함수를 컴파일러 자체로 봅니다.
누가 도움을 줄 수 있습니까? 오류 문제를 해결하는 방법, 올바른 기능 내보내기를 저장하고 담당하는 .def 확장자를 가진 파일이 어떻게 있을 수 있습니까?
extern "C"는 C++이므로 내보낸 함수의 선언과 구현 모두에 추가해야 합니다. 그렇지 않으면 입력의 서명이 "양성"이고 MT(다른 모든 사람과 마찬가지로)는 이를 볼 수 없습니다.
extern "C"는 C++이므로 내보낸 함수의 선언과 구현 모두에 추가해야 합니다. 그렇지 않으면 입력의 서명이 "양성"이고 MT(다른 모든 사람과 마찬가지로)는 이를 볼 수 없습니다.
글쎄, 나는 이렇게 썼다
그리고 여전히 동일 - 해결되지 않은 가져오기 함수 호출, 'dllmt42.dll'에서 '_add'를 찾습니다. . 저것들. ++ 없이 순수한 C가 필요합니까?
.def 파일은 전혀 필요하지 않습니다. MQL의 #import 섹션에 있는 기능을 복제해야 합니다.
글쎄, 네, 그리고 그것이 없으면 나는 그것을 보았고 그것은 저에게 효과가 없었습니다. 글쎄, 거기에서 복제 할 것을 보여주고 이미 올바른 길로 안내합니까?