我花了两周的时间来创建一个 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/