c++-winrt 相关问题


内置布尔到可见性转换器无法编译

我正在尝试使用自动 IReference 到可见性转换将可见性绑定到 ToggleButton::IsChecked 我正在尝试使用自动 IReference 到可见性转换将可见性绑定到 ToggleButton::IsChecked <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <CheckBox x:Name="myButton" Content="Click Me" /> <TextBlock Text="Hello" Visibility="{x:Bind myButton.IsChecked, Mode=OneWay}"/> </StackPanel> 在空白项目中这是可行的。在我现有的项目中,如果我提供自己的转换器,它就会工作,但如果我尝试使用自动转换,我会得到: error C3779: 'winrt::impl::consume_Windows_Foundation_IReference< winrt::Windows::Foundation::IReference<bool>,T>::Value': a function that returns 'auto' cannot be used before it is defined with [ T=bool ] (compiling source file Generated Files\XamlTypeInfo.g.cpp) 如果针对 c++17 进行编译,错误就会消失。我正在为 c++20 编译 https://github.com/microsoft/microsoft-ui-xaml/issues/9214


如何在 C++/WinRT (WinUI3) 中将图像从内存读取到 ImageSource?

[1] 我想在 XAML 中显示 Image 控件的图像,但该图像来自字节数组。 我应该怎么办?图像格式可以是JPG、BMP或PNG之一。 [1] 我想在 XAML 中显示 Image 控件的图像,但该图像来自字节数组。 我该怎么办?图像格式可以是 JPG、BMP 或 PNG 之一。 <Image x:Name="img"/> void MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&) { unsigned long long size; // iamge data size const unsigned char* buf; // image data img().Source(???); // what should I do? } [2] 我尝试了InMemoryRandomAccessStream,但没有成功。 我知道在C#中使用MemoryStream很方便,但是如何在C++中实现它? 另一个问题是这个方法是否也适用于JPG和PNG格式的图像? void MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&) { unsigned long long size; // iamge data size const unsigned char* buf; // image data winrt::Microsoft::UI::Xaml::Media::Imaging::BitmapImage bmp; winrt::Windows::Storage::Streams::InMemoryRandomAccessStream stream; // How to read data from stream? bmp.SetSource(stream); img().Source(bmp); } [3] 现在功能已经实现了,但是还有两个问题 IAsyncAction MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&) { unsigned long long size; // iamge data size const unsigned char* buf; // image data winrt::Microsoft::UI::Xaml::Media::Imaging::BitmapImage bmp; winrt::Windows::Storage::Streams::InMemoryRandomAccessStream stream; winrt::Windows::Storage::Streams::DataWriter dw(st.GetOutputStreamAt(0ULL)); dw.WriteBytes({ buf, size }); // This is very inefficient! co_await dw.StoreAsync(); dw.Close(); bmp.SetSource(stream); img().Source(bmp); stream.Close(); } 首先,我发现DataWriter::WriteBytes()确实是在复制数据。但我认为ImageSource只需要从我的buf中读取即可,不需要在读取之前将整个图像完全复制到流中。也许是类似MemoryView的东西,我这样想是不是错了? 其次,DataWriter和InMemoryRandomAccessStream的Close()应该在哪里调用? BitmapImage需要释放内存吗?这里有一个异步函数,我不知道应该写在哪里 [4] 根据IInspectable,我尝试了SHCreatMemStream并搜索了大量信息以提出另一个解决方案。目前的问题是,与方法[3]同样可行,但仍然会出现内存分配问题。 #include "Shlwapi.h" #include "shcore.h" #pragma comment(lib, "shlwapi.lib") void MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&) { unsigned long long size; // iamge data size const unsigned char* buf; // image data winrt::Microsoft::UI::Xaml::Media::Imaging::BitmapImage bmp; IStream* stream{ SHCreateMemStream(buf, size) }; // Copying takes a lot of time static const GUID guidIRandomAccessStream = { 0x905a0fe1, 0xbc53, 0x11df, { 0x8c, 0x49, 0x00, 0x1e, 0x4f, 0xc6, 0x86, 0xda } }; winrt::Windows::Storage::Streams::IRandomAccessStream pRas{ }; CreateRandomAccessStreamOverStream(stream, BSOS_OPTIONS::BSOS_DEFAULT, guidIRandomAccessStream, (void**)&pRas); bmp.SetSource(stream); img().Source(bmp); } 通过性能测试,发现CreateRandomAccessStreamOverStream的时间是一致的,但是SHCreateMemStream消耗的时间与图像大小成正比。可以得出,SHCreateMemStream中创建流的过程也涉及到内存的复制。 我对Windows编程中的Stream不是特别熟悉。创建流的过程一定会涉及到内存复制吗?从内存加载图像可以避免额外的开销吗?还有没有类似MemoryStreamView的结构来替代吗? 还有一个问题,我知道新的图像肯定需要内存存储。 BitmapImage设置Stream为Source会接管Stream占用的内存吗? Image控件设置BitmapImage作为Source会接管BitmapImage占用的内存吗? 如果是这样的话,我可以接受Stream分配新的内存,否则仍然是一个效率问题。 谢谢!!!!!!! 使用Stream已经彻底解决了这个问题。如前四期所述。 至于附加问题: ★1 使用 CreatStreamOnHGlobal 而不是 SHCreatMemStream。 因为SHCreatMemStream在调用过程中会对传入的内存块参数进行另一次内存复制。 CreatStreamOnHGlobal 创建流后不执行内存复制。您可以先通过GlobalAlloc分配内存,写入所需的图像数据,然后调用CreatStreamOnHGlobal,无需任何时间开销。另外,可以将CreatStreamOnHGlobal的第二个参数设置为true,自动释放GlobalAlloc分配的内存。 通过进程内存监控,我发现对于同一个程序,使用CreatStreamOnHGlobal的速度是SHCreatMemStream的两倍,并且不会导致内存泄漏。 ★2 创建的Stream需要调用Release方法减少一个引用。 IRandomAccessStream作为局部变量,会自动析构,无需主动释放。 并且BitmapImage还管理一部分引用,这些引用在离开作用域后被释放。 通过测试COM对象上Release方法的返回值,发现整个程序结束后引用计数又回到了0


各组之间的差异

我有一个像这样的数据框: df = 数据.frame( 重复 = c(1,1,1,2,2,2), 组 = c("a", "b", "c", "a", "b", "c"), 分辨率 = c(10,8,9...


在另一个列表中计算一个列表中的元素

df 是这样的: df <- data.frame( groups=I(list(c("a"), c("b","c", "d", "e","f"), c("g","h"), c("i&quo...


用逗号分割字符串,并删除一些字符

以下是我想要分离的值: <- data.frame(x = c("c(58663.809, 232648.355, 0)", "c(5902.873, 232674.248, 0)")) I would like to remove the "c(",


从 C# 访问 C 全局变量 'errno'

P/Invoking 时是否可以访问 C# 中的“errno”变量?这类似于 Win32 GetLastError()。


F# 从 while 循环中中断

有什么办法可以像C/C#那样做到吗? 例如(C#风格) 对于 (int i = 0; i < 100; i++) { if (i == 66) break; }


为什么 GetDirectoryName 对 C:\ 返回 null?

我刚刚遇到了一个看起来很奇怪的设计选择: System.IO.Path.GetDirectoryName(@"C: 旧的 ile.ext") 返回“C:较旧” 但 System.IO.Path.GetDirectoryName(@"C:\") 返回空值。 我


首次查找连续两个相同值的索引

我有一个相当简短的问题。 这些是一些要重现的示例向量: 一个<- c(14,26,38,64,96,127,152,152,152,152,152,152) b <- c(4,7,9,13,13,13,13,13,13,13,13,13,13,13) c <- c(62,...


C++ 代码链接中的错误:警告 C4190:类型已指定 C 链接,但返回与 C 不兼容的 UDT

我很难理解为什么以下代码(具有标准布局的 UDT)在 Visual C++ 2012 中给出 C 链接警告: 警告 C4190:“vec3_add”已指定 C 链接,但返回...


删除列表中奇数长度的元素

我有一个列表,我想删除具有奇数长度的元素: 我的列表<- list() my_list$a <- c(1,2,3,4) #length 4 my_list$b <- c(1,2,3) # length 3 my_list$c <- c(5,6,7,8,6,7) #


协调 C++ 和 Objective-C 中结构的填充

我使用 Objective-C 和 Metal 渲染到窗口,但是我的所有应用程序代码都是用 C++ 编写的。因此,CPU 对 MTLBuffer 内数据的所有操作都是用 C++ 完成的。这是由


在一列中搜索多个关键字并为每个关键字创建列

我有以下数据。 搜索字符串 <- c("to", "and", "at", "from", "is", "of") set.seed(199) id <- c(rnorm(5)) x <- c(...


使用嵌套列表在 Python 中创建嵌套字典

我有三个清单: A = ['a','b','c'] B = [[1,2,3],[4,5,6]] 和 C = ['A','B'] 我需要创建一个具有以下特征的字典: {'A':{'a':1, 'b':2, 'c':3}, 'B':{'a':4, 'b':5, 'c'...


针对经验丰富的 C 程序员的 C++ 教程 [已关闭]

我已经用 C 语言编程 25 年了,但从未使用过 C++。我现在需要学习 C++ 编程的基础知识。任何人都可以推荐在线教程(或者失败的书)


根据预定义范围计算列的行和

我有一个与此类似的数据集: 数据集<- structure( list( Participant.Id = 1:5, x1 = c(10L, 20L, 30L, 40L, 50L), x2 = c(15L, 25L, 35L, 45L, 55L), x3 = c(20L, 25L, NA, 45L, NA), x4 = c(25L...


如何使用 OpenCL C++ API 获取设备 cl_device_id

我开始使用 OpenCL C++ API。我已经使用 C API 很长时间了。 C++ API 更加优雅、简单,代码更少且不易出错,但我需要设备 ID。我...


非数组的 C 花括号初始化器

请考虑以下荒谬但编译的代码: int main(int argc, char *argv[]) { 无效*a,*b,*c,*d; void *the_good_array[] = { a, b, c, d }; void *the_bad_array = { a, ...


在C#中运行C++ dll来调用函数

我有 C++ 代码,我想将其打包为 dll 并在 C# 代码中使用。我制作了 dll,但是当我加载它时,我收到 System.AccessViolationException。 (首先,dll 无法加载,之后...


DolphinDB:在SQL语句中使用动态函数时出错

以下是我的脚本: sym = `C`MS`MS`MS`IBM`IBM`C`C`C$SYMBOL 价格= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29 数量 = 2200 1900 2100 3200 6800 5400 1300 2500 8800 时间戳 = [09:3...


类方法中的 Arduino C++ 回调

我是 Arduino 和 C++ 的新手,我对 arduino (c++)、类和类方法中的“this”有疑问: 我创建 classname.cpp 和 classname.h 在 classname.cpp 中,我尝试获取“this”(


如何只保留唯一的行而忽略列?

如果我有这些数据: df1 <- data.frame(name = c("apple", "apple", "apple", "orange", "orange"), ID = c(1, 2, 3, 4, 5), is_fruit = c("yes", "yes", "yes", "yes", "yes")) and I want...


如何系统地根据列位置对列进行操作?

有没有一种方法可以根据列的位置系统地划分列? 例如,使用这样的数据框: df <- data.frame(id = ('a1', 'a2'), a = c(1, 0), b = c(4,0), c = c(4, 3...


在`dplyr/across`中,如何排除给定的列

在 dplyr/across 中,我想 *-1 到数字列排除 a1 或 excelue a1 a2 图书馆(tidyverse) 原始数据<- data.frame( type=c('A','B','C'), cat=c("cat1","cat2","


如何使用 Isabelle 验证带有数组参数的 C 函数

我正在使用 Isabelle 来验证 C 程序。在验证过程中,我使用c-parser install-C-file加载代码,但是出现了以下问题: 尝试导致指针衰减


矩阵乘法后取消嵌套小标题

作为简单的例子,我想计算两个向量的矩阵乘积。 <- tibble(n=c("A", "B"), y=c(10,20)) b <- tibble(x=c(5, 15)) res <- a %>% 变异(旋转...


chromewebdriver 未启动

**来自 selenium 导入 webdriver driver=webdriver.Chrome("C:\Users cer\Download


C#中逻辑右移的代码是什么?

我正在尝试将具有逻辑右移(>>>)(>>>和>>之间的区别)的Java代码翻译为C# Java代码是 返回散列 >>> 24 ^ 散列 & 0xFFFFFF; C...


检查 R 中的列集是否相同(按行顺序)

我正在 R 中工作,如果可能的话,更喜欢 dplyr 解决方案。 样本数据: 数据.帧( col1 = c("a", "b", "c", "d"), col2 = c("a", "b&...


VS CODE - 安装 C/C++ 扩展包时遇到问题

我正在尝试在 VS code 中通过 ssh 安装 C/C++ 扩展包。出现如下错误。请帮我解决这个问题。我还尝试删除远程服务器中的 .vscode-server 文件夹。但没能


C 中的结构填充

我读过有关 C 中结构填充的文章: http://bytes.com/topic/c/answers/543879-what-struct-padding 并在文章后写了这段代码,应该打印出 'struct pad' 的大小,如 16...


Windows 10 IOT Core,普通 C++ dll 和 C# 代码支持?

我有一个基于 OpenCV v3 用 C++ 编写的实时图像处理 DLL 和一个基于该 dll 的带有 GUI 的 C# 程序。我想在 Windows 10 IOT 核心中使用该 dll,可以吗? DLL 就是我们...


如何使用 Linux API for C 确定文件系统类型(名称)?

我需要获取一个C字符串,其中包含fs名称。 有很多命令可以在终端中打印 fs 名称,但我找不到在 C/C++ 代码中获取它的简单方法。


如何整合两个python文件夹?

我的 OS(C:) 驱动器中的两个位置都有 python。 一个位于 [Folder1] C:\Python38 其他位于 [Folder2] C:\Users\User\AppData\Local\Programs\Python\Python38-32 大部分Folder1和Fol...


动态 AND 计算分组依据

说,我有以下内容 # 虚拟数据 df <- data.table(metric_1 = c(1,1,3) , metric_2 = c(1,2,2) ); df metric_1 metric_2 1: 1 1 2: 1 ...


C++ 标准是否禁止在不破坏的情况下重用存储?

现代 C++ 标准(C++20 或 C++23 都可以)的哪些部分规定是否可以重用对象的存储而不使用放置 new 运行其析构函数? alignas(T) std::字节存储[si...


调查表问题:调查表功能显示的观测值数量与数据中的实际观测值数量不同

数据<- data.frame(X =c(1,4,6,4,1,7,3,2,2),Y = c(6,5,9,9,43,65,45,67,90),weight=c(0.1,1.2,4,0,0,5,0.65,1,0)) dat_design <- svydesign(ids = ~1, data = Data, weights = Data$weight) ab=


从初始值设定项列表转换为“A”将使用显式构造函数“A::A(int)”

我正在尝试将旧的 C++03 代码库迁移到 C++11。但我无法理解 gcc 在以下情况下警告我的内容: % g++ -std=c++03 t.cxx % g++ -std=c++11 t.cxx t.cxx:功能中...


如何在c#中获取当年的第一天和最后一天

如何在c#中获取当年的第一天和最后一天


如何解决pytorch_geometric安装错误。未定义的符号:_ZN5torch3jit17parseSchemaOrNameERKSs #999

如何解决pytorch_geometric安装错误。未定义的符号:_ZN5torch3jit17parseSchemaOrNameERKSs #999 解决方案: conda 安装 pytorch pyg -c pytorch -c pyg -c conda-forge conda 创建 -n p...


ggplot2 分组堆积条形图

我的数据如下所示,每一行都是不同的项目: 年 <- c(2020, 2020, 2020, 2020, 2020, 2020, 2021, 2021, 2021, 2021, 2021) Group <- c(1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2) Type <- c(1, ...


如何在 C++ 中实现贝塞尔曲线?

我想实现贝塞尔曲线。我以前用 C# 做过这个,但我对 C++ 库完全不熟悉。我应该如何创建二次曲线? void printQuadCurve(float del...


来自 chokidar 的错误(C: ode_modules): 错误:EBUSY:资源繁忙或 > 已锁定,lstat 'C:\hiberfil.sys'

每次运行或重新启动后端服务器时,它都会在我的终端中显示以下错误: 来自 chokidar 的错误 (C: ode_modules): 错误: EBUSY: 资源繁忙或 锁定,lstat 'C:\hiberfil.sys' E...


Bash:一种将变量内容传递给 `bash -c` 的技术

假设我有一个 bash 变量 ext。我想做(类似的事情) bash -c "internal=$ext",其中内部的内容与 ext 完全相同 bash -c "internal=$ext" 将...


Microsoft Visual Studio 2022 中的行尾问题 - C++ 入门示例

这几天我一直在学习C++(几年前我只上过一些CS课程)。我目前正在阅读和学习《C++ Primer》第五版,我遇到了...


在R包中使用C++执行头

我正在开发一个包含C++代码的R包,我想使用标准库头“execution”。由于 C++17 现在是 CRAN 上的默认值,这似乎没问题。然而,这个


C 使用 lambda 表达式吗?

如果有的话,你该如何使用呢? (句法) 另外,为什么 C 支持或不支持 lambda 表达式?


gcc-12/13:仍然找不到 std::stacktrace

我有这个代码: #包括 #包括 int 嵌套函数(int c) { std::cout << std::stacktrace::current() << '\n'; return c + 1; } int func(int ...


C 类似于 flutter 中的头文件?

在 C 中,您可以拥有包含大量导入的头文件。这可以在 Flutter 中完成吗? 您可以...


如何更改 VS Code 中使用的 C++ 语言标准版本?

我打印了__cplusplus宏的值,发现我的文件是在Visual Studio Code中用C++98执行的。我正在使用 CodeRunner 扩展。 我如何将其更改为 C++17?


© www.soinside.com 2019 - 2024. All rights reserved.