小编zwc*_*oud的帖子

如何在.netcore中嵌入coreclr创建托管对象并在本机C/C++中调用托管方法?

我之前在Mono上做过这个,我认为应该有一些方法可以用coreclr做同样的事情.

我在Mono上做了什么(在VS2013上编译并在win10上运行):

#include <windows.h>
#include <mono/jit/jit.h>
#include <mono/metadata/assembly.h>
#pragma comment(lib, "mono-2.0.lib")

int main(int argc, char* argv[])
{
    mono_set_dirs("C:\\Program Files (x86)\\Mono\\lib",
        "C:\\Program Files (x86)\\Mono\\etc");

    MonoDomain *domain;
    domain = mono_jit_init(argv[0]);

    MonoAssembly *assembly;
    char* assemblyPath = "D:\\Mono\\hello.exe";
    assembly = mono_domain_assembly_open(domain, assemblyPath);
    if (!assembly)
        return 1;

    int returnValue = mono_jit_exec(domain, assembly, argc, argv);

    mono_jit_cleanup(domain);

    return returnValue;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码调用输入法Main()hello.exe.我也可以加载一个类型mono_class_from_name,创建一个托管对象mono_object_new,初始化(调用构造函数),mono_runtime_object_init并使用它调用方法mono_runtime_invoke.

关于要点的代码

所有这些都在mono doc上有详细记录.

我没有深入研究coreclr repo,对内部实现一无所知.

我已经通过互联网搜索并找到了一些可能有用的资源:

  1. 如何从Linux上的本机代码调用.Net核心库?在.NET基金会论坛上
  2. coreclr问题

.net mono .net-core

7
推荐指数
0
解决办法
665
查看次数

如何找到QDockWidget标题栏的高度?

我正在尝试找到QDockWidget标题栏的高度,以便对自定义布局进行一些智能大小调整,但标题栏不是一个单独的小部件,它内置于停靠小部件的私有布局中,并且没有成员访问它.还有其他方法可以找到它的高度吗?

c++ qt qdockwidget

6
推荐指数
1
解决办法
1384
查看次数

如何从.NET核心C#项目中调试并进入本机代码项目?

我正在VS2015中开发.NET核心(.NET Standard 1.6)应用程序.应用程序通过P/Invoke调用C++代码.现在我需要进入我的本机dll项目的C/C++代码.

在常规.NET应用程序中,通过在应用程序的属性窗口中启用非托管代码调试,我们可以直接进入C/C++代码:

进入C/C++代码

但我无法在.NET核心项目中找到这样的选项.我知道我可以将调试器附加到应用程序以调试本机代码,但这不适合我的情况.

同样,我想从托管C#代码调试本机C/C++代码.

有任何想法吗?

也许我应该切换回.NET Framework,以便我可以调试本机代码.调试真的很难printf.:(

c# pinvoke .net-core

6
推荐指数
1
解决办法
1377
查看次数

如何在Qt中派生新的基本文件名?

在保留目录和扩展名的同时,在Qt中仅重命名给定文件路径的基本文件名的最佳/最标准方法是什么?

有没有标准的方法,或者我只是使用正则表达式?

比方说我有:

/home/user/myfile.png
Run Code Online (Sandbox Code Playgroud)

它将改为:

/home/user/myfile-modified.png
Run Code Online (Sandbox Code Playgroud)

c++ qt filepath

5
推荐指数
1
解决办法
3619
查看次数

如何在虚幻引擎 4 中将 char* 转换为 TCHAR?

例如,

\n\n
const char* bytes = "somemultibytecharacter\xe4\xb8\x80\xe4\xba\x9b\xe5\xae\xbd\xe5\xad\x97\xe7\xac\xa6";\nsize_t n = strlen(bytes);\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何转换bytes为虚幻引擎 C++ 代码FStringTCHAR*在虚幻引擎 C++ 代码中转换?

\n\n

我知道我可以使用std::mbstowcsMultiByteToWideChar进行转换,但我正在尝试寻找 UE4 替代方案。

\n

c++ unreal-engine4

5
推荐指数
1
解决办法
8545
查看次数

如何转义“#”以便它不会在 GitHub 评论中引用问题?

引用问题相反,我只想输出#5没有任何链接的文本。我怎样才能做到这一点?

例如,来自 Unity 的着色器错误消息可能包含#以下数字:

“自然/地形/标准”中的着色器错误:
实参 #3 必须与形式输出参数(“权重”)
类型相同 实参 #4 必须与形式输出参数(“mixedDiffuse”)
实参 #5类型相同与正式输出参数(“mixedNormal”)类型相同
,第 64 行的函数调用中的参数过多(在 d3d9 上)

我试过了\#5&#35;5但它们不起作用:仍然链接。

问题不集中在如何逃脱#,而是#5,这将被转换为指向另一个问题的链接。这是出乎意料的。

github github-flavored-markdown

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

将项目与 Gradle 文件同步时,如何阻止 Android Studio 运行我的 gradle 任务?

文档中

当您对项目中的构建配置文件进行更改时,Android Studio 要求您同步您的项目文件,以便它可以导入您的构建配置更改并运行一些检查以确保您的配置不会产生构建错误。

我的build.gradle应用程序:

apply plugin: 'com.android.application'

android {
    //...  <--modified here
}

task myTask() {
    println 'doing something...'
    //time-consuming operations which may takes 16s or more
    println 'done'
}
Run Code Online (Sandbox Code Playgroud)

我只是发现myTask每次修改build.gradlefor 应用程序时它都会运行,即使我没有更改它。

运行一些检查以确保您的配置不会产生构建错误时,这是正常操作吗?如果是这样,如何在同步时使任务不运行?

环境
Android Studio 3.1.3 with gradle-4.9-bin.zip

android gradle

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

WebGL着色器编译错误消息的数字是什么意思?

例如,

ERROR: 0:137: 'blend2' : no matching overloaded function found
ERROR: 0:137: '=' : dimension mismatch
ERROR: 0:137: '=' : cannot convert from 'const mediump float' to 'highp 3-component vector of float'
Run Code Online (Sandbox Code Playgroud)

什么00:137
什么1370:137
为什么所有错误消息都以0:?开头?为什么不是1:还是2:

注意我不是在问为什么我会收到这些错误.如果有的话,首选参考一些官方规范或文档的答案.我正在使用Chrome 63.0.3239.132.

glsl webgl

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