c++ - 如何创建一个 DLL,它接受来自 MT4 的字符串并返回字符串类型?

标签 c++ dll mql4 metatrader4 mt4

我花了两周的时间来创建一个 DLL,我可以向其传递字符串并取回字符串。但仍然没有成功。

我在 Dev-C++(TDM-GCC 4.9.2) 和 visual studio community 2015 上试过这个。我对此进行了很多搜索,并尝试了几乎所有找到的示例代码,但我没有成功。

我必须将此 DLL 与 MetaTrader Terminal 4 一起使用。
这是我使用的一个示例代码。此代码编译成功,但当我向此发送一个 string 时,从 MT4,我收到访问冲突错误。

#ifndef MYLIB_HPP
#define MYLIB_HPP

#include <string>

#ifdef MYLIB_EXPORTS
#define MYLIB_API __declspec(dllimport) 
#else
#define MYLIB_API __declspec(dllexport) 
#endif
bool MYLIB_API test(const std::string& str);
#endif

bool MYLIB_API MyTest(const std::string& str)
{
    return (str == "Hi There");
}

最佳答案

如果您确实在 DLL 和另一个可执行文件之间共享 C++ string,则两者都需要使用相同的工具链进行编译。这是因为 std::string 仅在 header 中定义。因此,如果 DLL 和可执行文件使用不同的 string header ,它们很可能是二进制不兼容的。

如果您想确保不同的工具链都能正常工作,请坚持使用以 NULL 结尾的 C 字符串。

关于c++ - 如何创建一个 DLL,它接受来自 MT4 的字符串并返回字符串类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41074470/

相关文章:

c++ - assert 语句在 C++ 中不起作用

c++ - 是否可以通过 Windows 键(可能没有钩子(Hook))捕获 Windows 开始菜单弹出窗口?

c++ - 如何让 Q_PROPERTY 在设计 View 中显示

delphi - 可以在 DLL 中使用 TDateTime 以供其他语言使用吗?

python - 使用自定义指标和 C++ DLL 时出现访问冲突读取错误和 MT4 崩溃

c++ - Obj 文件中已经定义的函数

c++ - 如何使用def文件在de dll中使用mfc

c++ - 库调用失败 c++ dll

mql4 - 如何在 VS Code 中编写和编译 mql4 和 mql5 语言?

c# - 无法使用 Visual Studio 2015、MetaTrader Terminal 4 运行带有 [ nquotes ] 的简单智能交易系统