小编Ðаn*_*Ðаn的帖子

JVM 如何访问文件系统

我和我的老板发生了争执,他确信 JVM 使用 JNI 来访问诸如文件系统之类的本机事物。我认为他错了,因为 JVM 本身是本机代码,它直接与操作系统通信——它不需要 JNI 样板来访问文件系统。

请帮我澄清JVM是如何工作的

java java-native-interface jvm

4
推荐指数
1
解决办法
2523
查看次数

ConcurrentDictionary.Count > 0 与 ConcurrentDictionary.Any() 相同吗?

如果我有一个实例,我使用该属性还是 LINQConcurrentDictionary是否重要?我宁愿写,而不是我认为更具描述性的。CountAny()dict.Any()dict.Count > 0Any()

我只关心正确性,而不关心性能。用例是

void process()
{
   if (concurrentDictionary.Count <= 0) // or !Any() ?
      return; // dictionary is empty, nothing to do

   // ...
}
Run Code Online (Sandbox Code Playgroud)

.net linq concurrentdictionary

4
推荐指数
1
解决办法
2374
查看次数

可以用memcpy()来改变"const"成员数据吗?

对于structconst会员

struct point { const int x; const int y; };
Run Code Online (Sandbox Code Playgroud)

用作会员数据

struct Foo
{
    point pt{ 0, 0 };
    void move_x(int value);
};
Run Code Online (Sandbox Code Playgroud)

如何Foo::move_x()写更新Foo::pt?可以使用memcpy()吗?

#include <memory.h>
void Foo::move_x(int value)
{
    const point pt_{ pt.x + value, pt.y };
    (void) memcpy(&pt, &pt_, sizeof(pt_)); // pt = pt_;
}
Run Code Online (Sandbox Code Playgroud)

这可以使用指针安全地完成

#include <memory>
struct Bar
{
    std::unique_ptr<point> pPt_{ new point{ 0, 0 } };
    const point& pt() const {
        return *pPt_;
    } …
Run Code Online (Sandbox Code Playgroud)

c++ member assignment-operator

4
推荐指数
1
解决办法
636
查看次数

如何阻止 Windows 控制台光标闪烁

我知道如何完全隐藏光标,但是他们有什么方法可以阻止它闪烁吗?莫名的让人不安...

我不会为此安装 3rd 方软件,我想要的是使用几行 C++ 的简单解决方案。

windows console cmd cursor

4
推荐指数
1
解决办法
1392
查看次数

如何编写成功链接gstreamer的CMAKE文件基础教程5

我正在尝试编写一个 CMAKE 文件来编译此处找到的代码。

我当前的 CMAKE 文件如下所示,并且已成功编译并链接了之前的教程。它也编译了这个,但在链接时出现以下错误:

undefined reference to `gst_video_overlay_get_type'
undefined reference to `gst_video_overlay_set_window_handle'
Run Code Online (Sandbox Code Playgroud)

CMAKE 文件如下所示:

cmake_minimum_required(VERSION 3.18)
project(gstreamer)

set(CMAKE_CXX_STANDARD 20)

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)

pkg_search_module(GST REQUIRED gstreamer-1.0>=1.4
        gstreamer-sdp-1.0>=1.4
        gstreamer-app-1.0>=1.4
        gstreamer-video-1.0>=1.4
        )


add_executable(gstreamer main.cpp)

target_include_directories(gstreamer PRIVATE ${GTK3_INCLUDE_DIRS} ${GST_INCLUDE_DIRS})
target_link_libraries(gstreamer ${GTK3_LIBRARIES} ${GST_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

其他 SO 帖子建议了gstreamer-video-1.0我相信我所在的链接:

target_link_libraries(gstreamer ${GST_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

如果我误解了 PkgConfig 的工作原理,我非常感谢您的解释。

谢谢

cmake gstreamer

4
推荐指数
2
解决办法
8932
查看次数

完全卸载Visual Studio,多个版本

我最近在一台 Windows 10 计算机上安装了 Visual Studio 2019,其中 VS 2013 和 VS 2017 很久以前就已经安装了。VS 2019 的表现非常不稳定(无法编译几乎原始的 C++ 项目),因此我想从我的计算机中清除任何 VS 的所有痕迹,并仅从全新安装 VS2019 开始。

Visual Studio 安装程序只想添加软件。如何安全地从系统中完全清除 Visual Studio 的所有安装,以便获得全新安装?Add/Remove Programs显示我安装了数十种 Microsoft 产品;我根本不清楚应该删除哪些内容才能实现我的目标。

windows visual-studio

4
推荐指数
1
解决办法
4万
查看次数

使用WPF实现WinForms?

这个问题是与同事进行午餐时间对话的结果......我读过像WPF和Winforms这样的问题......我个人认为长期 WPF是要走的路.问题/问题是在此期间要做什么.

是的,WPF当然有其优势; 不是建立在GDI/USER上的就是其中之一.但是在这个时间点(即2009年末;使用VS2008或甚至VS2005; Silverlight3最近发布并且尚未广泛采用/部署),WPF几乎看起来可能是一个"过度设计"的解决方案.虽然我确信它会随着时间的推移而改变,但它不会让今天的事情变得更容易,也不会使眼前的(比如<36个月)更加容易.

让我们面对现实,WinForms 非常简单易行; 特别是对于仍然"幸福地"使用MFC的许多同事而言.是的,可能很难做出光滑的动画,3D图形,渐变等; 但它是一个非常实用的解决方案,许多人(即C++/MFC开发人员)今天很容易理解.

随着那个漫长的介绍 - 有人想/累了/等等.关于使用WPF实现(大多数)WinForms的想法(即,WinForms 没有 GDI/USER)?我敢肯定Control.Handle,100%重新实施是不可能的.但看起来很多WinForms控件似乎可以使用WPF"引擎盖下"重新实现.或者这真的是边界线不可能吗?

通过"重新实现",我设想删除对System.Windows.Forms的程序集引用,用(比如)Microsoft.Wpf.WinForms替换它们,然后重建我的应用程序.之后,我希望修复一些(相对较少数量的)编译器和/或运行时错误(比如P/Invokes到Win32 API).

像这样的东西似乎是微软各种​​WinForms/WPF互操作策略(如WindowsFormsHost)的很好的补充.例如,开发人员可以以更加渐进的方式开始使用/学习WPF.

编辑:虽然各种"为什么?" 讨论很有意思,他们没有回答基本的技术问题:"是的,......这是怎样的......;或者不,......因为......".

.net wpf winforms

3
推荐指数
1
解决办法
1006
查看次数

适用于任何PC的Visual Studio 2017 C ++ Exe(链接vcruntime140.dll)

我对使用c ++进行GUI编程非常陌生,因此我没有那么多经验。

我使用Visual Studio 2017 CRL程序包为自己的程序创建了一个GUI,现在我正在尝试使该exe可供所有人使用。对于已安装Visual Studio或VC Runtime的用户,该应用程序运行良好,但对于那些未进行编程的用户,该应用程序会抛出类似以下内容:“您的计算机上缺少vcruntime140.dll以运行该应用程序”。我不确定如何在程序中链接这些dll,以便每个人都可以使用它。我也不确定我将如何链接dll。

c++ user-interface visual-studio

3
推荐指数
1
解决办法
3281
查看次数

如何获取 Windows 安装的更新

我需要获取 Windows 计算机上所有已安装的更新。我尝试了 WUA API,但结果与我在控制面板 - 已安装的更新中看到的不同。我的代码返回 321 更新,而在控制面板中我看到 508。这是我的代码:

IUpdateSearcher* updateSearcher = NULL;
IUpdateSession* updateSession = NULL;
IUpdateCollection* updateList = NULL;
ISearchResult* results = NULL;
IUpdate* updateItem = NULL;
BSTR criteria = NULL;
LONG updateSize = 0;
HRESULT hr;

if ((hr = CoInitialize(NULL)) != S_OK)
{
    return -1;
}
if ((hr = CoCreateInstance(CLSID_UpdateSession, NULL, CLSCTX_INPROC_SERVER, IID_IUpdateSession, (LPVOID*)&updateSession)) != S_OK)
{
    return -1;
}
if ((hr = updateSession->CreateUpdateSearcher(&updateSearcher)) != S_OK)
{
    return -1;
}
if ((hr = updateSearcher->put_ServerSelection(ssWindowsUpdate)) != S_OK) …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi windows-update

3
推荐指数
1
解决办法
2702
查看次数

如何抑制 GCC 编译器警告:内联变量仅适用于 -std=c++1z 或 -std=gnu++1z

我正在使用一个内联全局变量,它非常适合它。

class MyClass {
public:
    void Func() {
    }
}

inline MyClass myClass;  // global inline variable
Run Code Online (Sandbox Code Playgroud)

以上适用于我的目的,但是当我的代码在 gcc 上编译时使用低于 C++17 的编译器时我收到警告。以下是警告

警告:内联变量仅适用于 -std=c++1z 或 -std=gnu++1z

问题:
如何抑制 gcc 上的警告?

我试图通过使用#pragma下面的类似来抑制警告

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wc++17-extensions"
inline MyClass myClass;
#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)

上述#pragma技术适用于 clang,但看起来 GCC 不理解#pragma? 我只是想蛮力压制 GCC 上的警告。我怎样才能做到这一点?

看起来 gcc 警告选项列表甚至没有提到这个? https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

我正在使用gcc (GCC) 7.3.0

gcc g++ compiler-warnings c++17

3
推荐指数
1
解决办法
1326
查看次数