QT 项目不会链接到以 std::wstring 作为参数的函数。

发布于 2024-12-06 08:59:41 字数 323 浏览 1 评论 0原文

我有一个 VS2010 dll,我正在尝试链接到 QT 项目。 我正在使用使用 MSVC2010 构建的 QT 版本 4.7.4。 QT Creator也是使用MSVC2010来编译。

我通过包含头文件、引用 pro 文件中的 .lib 并将 .dll 放入执行文件夹中来隐式链接。

现在我只使用 dll 中一个类的函数。有些功能链接,有些则不链接。 Dependency Walker 确认它们都导出得很好。

不链接的函数采用 std::wstring 或 std::wstring* 作为参数。

有什么东西在某处重新定义了 wstring 吗?任何想法都会有帮助。

I have a VS2010 dll I'm trying to link into a QT project.
I'm using QT version 4.7.4 that I built using MSVC2010. QT Creator is also using MSVC2010 to compile.

I'm implicitly linking by including the header files, referencing the .lib in the pro file, and placing the .dll in the execution folder.

Right now I'm only using functions from one class from the dll. Some of the functions link, some of them don't. Dependency walker confirms that they're all being exported just fine.

The functions that don't link take a std::wstring or a std::wstring* as a parameter.

Is something redefining wstring somewhere? Any ideas would be helpful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

真心难拥有 2024-12-13 08:59:41

所以对于其他遇到这个问题的人来说,我只是想通了。

链接器被破坏,因为 Visual Studio 默认将 wchar_t 映射到 __wchar_t,而 QT 则不会。

修复方法:转到项目设置 ->配置属性-> C/C++->语言并取消“将 WChar_t 视为内置类型”属性。

So for anyone else getting this problem, I just figured it out.

The linker was breaking because Visual Studio by default maps wchar_t to __wchar_t, and QT does not.

To fix: Go to Project Settings -> Configuration Properties -> C/C++ -> Language and uncheck the "Treat WChar_t As Built in Type" property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文