Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Gostaria de saber se é possível obter um ponteiro real para uma função. Os ponteiros obtidos usando typedef funcionam perfeitamente bem no programa mql. Mas, infelizmente, não consegui passá-los para a dll.
Se você conhece C++ + assembler embutido e sabe o que e como colocar na pilha, e os termos chamada distante e próxima estão claros, você pode tentar. Não posso garantir que funcionará, mas é possível.
Onde está o erro?
Seu exemplo no código é bem diferente. Estou tentando obter o valor do endereço.
Há um exemplo no artigo.
Seu exemplo no código é bem diferente. Estou tentando obter o valor do endereço.
Há um exemplo no artigo.
Eu destaquei os locais onde está escrito por endereço. Entretanto, esse exemplo do artigo também causa uma falha.Entendi imediatamente o que você queria. Tenho certeza de que o endereço retornado das funções WinAPI não pode ser usado em MQL5. Mas o endereço é passado para os argumentos corretamente.
Você pode ter certeza absoluta escrevendo uma DLL simples que mostre o endereço recebido no argumento e o retorne. E compare o resultado em MQL5. Muitas pessoas aqui praticam C.
Onde está o erro?
Corrigido o seu:
Você deve ter um comprimento de 4 ou menos em todos os lugares
A cópia de mais de 2 GB funciona
Obtendo o endereço inicial de uma matriz:
Seu exemplo no código é bem diferente. Estou tentando obter o valor do endereço.
Há um exemplo no artigo.
Eu destaquei os locais onde está escrito por endereço. Entretanto, esse exemplo do artigo também causa uma falha.É claro que sim... os protótipos são de 4 (endereço de 32 bits a la unsigned int), e você os compila/executa em 5 (tem 64).
Se você usa WinAPI, não pode confiar em ninguém - escreva protótipos você mesmo. Ou melhor, escreva sua própria DLL, deixe-a puxar o winapi e, lá em cima, no mql, forneça interfaces de nível superior
A cópia de mais de 2 GB funciona
Obtendo o endereço inicial da matriz:
Errei o ponto com o endereço de 64 bits. Mas continuo travando com o endereço corrigido. Tem certeza de que deve funcionar? Posso ver um exemplo completo do código fxsaber corrigido?
Até agora, continuo com minha própria opinião - o endereço da WinAPI é incompatível com o MQL.
Corrigido o seu:
é claro que sim... os protótipos são do 4 (endereço de 32 bits a la int sem sinal) e compilam/executam no 5 (ele tem 64).
Obrigado, agora está funcionando.
O último parâmetro (que é cnt) também é de 64 bits. Ele é size_t
https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/memcpy-wmemcpy