我正在尝试从 Qt 中连接的 DLL 获取 std::string/std::wstring 返回值,但我遇到了问题。
来自 DLL 的代码:
using namespace std;
extern "C++" __declspec(dllexport) string test()
{
return "Passed!";
}
我的 Qt 应用程序 (Qt Creator) 中的代码:
typedef std::string (*Test)();
QLibrary *lib = new QLibrary("dllname");
lib->load();
.... dll load check ....
Test test = (Test) lib->resolve("test");
std::string s = test();
QString name = QString::fromStdString(s);
结果“名称”变量将有“H”代替“通过!” 我做错了什么?
提前致谢
最佳答案
感谢您的评论,我已经做到了:
extern "C" __declspec(dllexport) int test(wchar_t* out)
{
wcscpy_s(out, MAX_PATH, L"Passed!"); // I'm using sys paths in my app,
// so MAX_PATH is ok for me
return 0;
}
Qt 方面:
typedef int (*Test)(wchar_t*);
QLibrary *lib = new QLibrary("dllname");
lib->load();
.... dll load check ....
Test test = (Test) lib->resolve("test");
wchar_t s[MAX_PATH];
test(s);
QString name = QString::fromWCharArray(s);
变量“名称”现在应该是“已通过!”
在 QLibrary 类引用中仅提及支持
extern "C" __declspec(dllexport)
指令。
已更新感谢@MSalters
关于c++ - Qt和VS C++ dll函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7959897/