查看完整版本: [-- Qt5怎么启用公共语言运行时支持(/CLR) --]

QTCN开发网 -> Qt基础编程 -> Qt5怎么启用公共语言运行时支持(/CLR) [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

yanwuyue 2016-06-25 08:04

Qt5怎么启用公共语言运行时支持(/CLR)

最近项目里需要调用C#代码,需要C++里的公共语言运行时支持(/CLR)

VS选项设置里可以直接启用,Qt5怎么启用,

总不能C#->VS++->Qt5这样把

yanwuyue 2016-06-27 08:34
没有人调用过C#的代码吗?

zhang2349 2016-06-27 16:14
应该加一些编译参数的吧
我直接用vs的

yanwuyue 2016-06-30 14:49
zhang2349:应该加一些编译参数的吧
我直接用vs的 (2016-06-27 16:14) 

VS下的我会,不知道Qt下怎么启用/CLR,
我现在是Qt拖一个VC的dll,VC的dll再拖一个C#的dll

yanwuyue 2016-06-30 15:26
终于在一篇位置中找到

QMAKE_CXXFLAGS += /clr

不过马上报错

cl: 命令行 error D8016 :“/clr”和“/EHs”命令行选项不兼容


zhang2349 2016-07-01 09:39
你可以在vs工程属性里看 他加了一些什么参数
我看启用clr  /EHs 会变成 /EHa


我是直接用VS写QT和CLR的,qt里直接用调C#的代码

yanwuyue 2016-07-05 14:02
google上不停的搜索,零零散散的资料,
终于还是让我解决了
pro里面加编译参数:
  1. QMAKE_CXXFLAGS += /clr
    win* {
       QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa
       QMAKE_CXXFLAGS_STL_ON = /EHa
    }

代码里显性调用C#的dll
  1. #using <I:/bin/Release/NL70ITX(CS).dll>


运行时C#dll必须和你的主程序在一个目录下,
比如目录a下有a.exe  目录b/b.dll  b.dl调用c#.all,c#.all 还是得还a.exe一个目录

yanniupai 2017-05-10 11:19
最新的Qt5.8已经不需要改pro文件了,直接使用如下引用即可,运行也要把dll拷贝到exe目录,我这有我编写的一个示例。[attachment=17066]
#using <I:/bin/Release/NL70ITX(CS).dll>

fengwujiutan 2017-10-12 18:27
yanniupai:最新的Qt5.8已经不需要改pro文件了,直接使用如下引用即可,运行也要把dll拷贝到exe目录,我这有我编写的一个示例。[图片]
#using <I:/bin/Release/NL70ITX(CS).dll> (2017-05-10 11:19) 

你好,我按照你的方法,尝试了一下在头文件中添加
#include <vcclr.h>
都报错,提示没有该文件,能否再次请教一下

fengwujiutan 2017-10-13 11:35
yanwuyue:google上不停的搜索,零零散散的资料,
终于还是让我解决了
pro里面加编译参数:
QMAKE_CXXFLAGS += /clr
win* {
....... (2016-07-05 14:02) 

你好,我复制代码后放到pro文件中,编译不过,提示error: /clr: No such file or directory  
error: /EHa: No such file or directory ,请问怎么解决?谢谢,能否留个联系方式,交流一下

行走的荷尔蒙 2018-12-05 12:23
yanwuyue:google上不停的搜索,零零散散的资料,
终于还是让我解决了
pro里面加编译参数:
QMAKE_CXXFLAGS += /clr
win* {
....... (2016-07-05 14:02) 

开启了clr不能断点调试吗?  我打断点提示出现异常

cj123sn 2019-06-06 17:01
yanwuyue:google上不停的搜索,零零散散的资料,
终于还是让我解决了
pro里面加编译参数:
QMAKE_CXXFLAGS += /clr
win* {
....... (2016-07-05 14:02) 

多谢前人栽树,同样的问题得以解决,多谢

yanwuyue 2019-06-07 15:40
这么久了还能收到回复

cj123sn 2019-06-10 17:01
行走的荷尔蒙:开启了clr不能断点调试吗?  我打断点提示出现异常
 (2018-12-05 12:23) 

我也出现这样的问题了,最后怎么解决的啊

15151872298 2019-08-09 09:15
我遇到的问题是Qt开启clr以后出现很多错误
C:\Qt\Qt5.12.0\5.12.0\msvc2015_64\include\QtCore\qhashfunctions.h:109: error: C2440: “reinterpret_cast”: 无法从“nullptr”转换为“quintptr”
F:\ZhongChaoWork\2019-8-9\MyFirst\untitled\mainwindow.h:16: error: C1192: “C:\Program Files (x86)\ABB Industrial IT\Robotics IT\SDK\PCSDK 6.05\ABB.Robotics.Controllers.PC.dll”
“系统找不到指定的路径。”上的 #using 失败

15151872298 2019-08-09 10:23
15151872298:我遇到的问题是Qt开启clr以后出现很多错误
C:\Qt\Qt5.12.0\5.12.0\msvc2015_64\include\QtCore\qhashfunctions.h:109: error: C2440: “reinterpret_cast”: 无法从“nullptr”转换为“quintptr”
F:\ZhongChaoWork\2019-8-9\MyFirst\untitled\mainwindow.h:16: error: C1192: “C .. (2019-08-09 09:15) 

最后我删掉一个强制转换居然就可以用了

frenzyx 2022-09-28 10:40
15151872298:我遇到的问题是Qt开启clr以后出现很多错误
C:\Qt\Qt5.12.0\5.12.0\msvc2015_64\include\QtCore\qhashfunctions.h:109: error: C2440: “reinterpret_cast”: 无法从“nullptr”转换为“quintptr”
F:\ZhongChaoWork\2019-8-9\MyFirst\untitled\mainwindow.h:16: error: C1192: “C .. (2019-08-09 09:15) 

请教一下,我用“#using </.../..../XXXX.dll>”时,显示#using是不存在的宏,我的是Qt5.14,这个和版本有关系吗?

chris89 2022-10-18 15:37
frenzyx:请教一下,我用“#using </.../..../XXXX.dll>”时,显示#using是不存在的宏,我的是Qt5.14,这个和版本有关系吗? (2022-09-28 10:40)

请教一下,遇到相同问题,有解决方案吗?感谢

hlhsppx123 2023-08-03 09:42
yanniupai:最新的Qt5.8已经不需要改pro文件了,直接使用如下引用即可,运行也要把dll拷贝到exe目录,我这有我编写的一个示例。[图片]
#using <I:/bin/Release/NL70ITX(CS).dll> (2017-05-10 11:19) 

为什么我试了你这个例子#using报错 error: invalid preprocessing directive
Qt5.9.7    MSVC2017

hlhsppx123 2023-08-09 13:57
这貌似不是好的解决方案,qt的基础库好像和clr冲突,我吧qt creator开发的项目移植到visual studio上没有问题但是启用公共语言运行时支持后出现了大量问题,最后虽然编译通过了,但是qt的一些功能直接失效了。
GPT:
是的,启用公共语言运行时支持(/clr)后,Qt的一些功能可能会受到影响或失效。这是因为CLR(Common Language Runtime)和Qt的基础库之间存在一些不兼容性。

公共语言运行时支持(/clr)允许在C++代码中使用.NET框架,但它改变了代码的执行环境和行为。Qt是一个独立的C++框架,它的功能和特性是在非托管环境下设计和实现的。因此,在启用公共语言运行时支持后,Qt的某些功能可能无法正常工作。

在你的情况下,当你使用#pragma unmanaged将代码标记为非托管时,Qt的基础库可以正常工作。但是,当你使用#pragma managed将代码切回托管状态时,Qt的功能可能会受到影响,导致按钮等控件无法正常响应。
总之,启用公共语言运行时支持后,Qt的功能可能受到限制。


查看完整版本: [-- Qt5怎么启用公共语言运行时支持(/CLR) --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled