小编And*_*ern的帖子

从非托管代码调用托管.NET代码的最佳方法

我正在尝试找到从非托管C++代码调用托管.NET代码的最佳性能方法.我在C++应用程序中找到了有关Hosting .NET的信息,我可以创建一个pRuntimeHost并启动它而不会出现问题.

ExecuteInDefaultAppDomain似乎非常有限,因为我真的想发送一些参数并让它返回一个信息结构.最明显的替代方法是使用COM方法,但当前的C#代码并未真正设置为与方法的接口.

无论哪种方式,我想返回整数,字符串(char*)s,双精度和其他核心C++类型.双方都有太多代码将C++转换为C#,并且使用托管C++不是一个可接受的解决方案,因为使用此C++代码的其他组不希望出于性能原因而开始使用托管代码.

目标是尽可能少地修改现有的C++和C#代码,但仍然在C++中的特定点使用C#代码中的方法,而不会严重影响C++代码的速度.

根据Internet上的代码,托管.NET的启动和关闭顺序是:

#include "stdafx.h"
#include <metahost.h>

#pragma comment(lib, "mscoree.lib")

int _tmain(int argc, _TCHAR* argv[])
{
    ICLRMetaHost       *pMetaHost       = NULL;
    ICLRMetaHostPolicy *pMetaHostPolicy = NULL;
    ICLRDebugging      *pCLRDebugging   = NULL;

    HRESULT hr;
    hr = CLRCreateInstance(CLSID_CLRMetaHost, IID_ICLRMetaHost, (LPVOID*)&pMetaHost);
    hr = CLRCreateInstance(CLSID_CLRMetaHostPolicy, IID_ICLRMetaHostPolicy, (LPVOID*)&pMetaHostPolicy);
    hr = CLRCreateInstance(CLSID_CLRDebugging, IID_ICLRDebugging, (LPVOID*)&pCLRDebugging);

    DWORD dwVersion = 0;
    DWORD dwImageVersion = 0;
    ICLRRuntimeInfo *pRuntimeInfo;
    hr = pMetaHost->GetRuntime(L"v4.0.30319", IID_ICLRRuntimeInfo, (LPVOID *)&pRuntimeInfo);

    ICLRRuntimeHost * pRuntimeHost = NULL;
    hr = pRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (LPVOID *)&pRuntimeHost);

    hr = pRuntimeHost->Start();

    DWORD dwRetCode …
Run Code Online (Sandbox Code Playgroud)

c# c++ unmanaged managed

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

R问题与舍入毫秒

考虑到以下问题,在R.下舍入毫秒数.如何绕过它以便时间正确?

> options(digits.secs=3)
> as.POSIXlt("13:29:56.061", format='%H:%M:%OS', tz='UTC')
[1] "2012-06-07 13:29:56.060 UTC"
> as.POSIXlt("13:29:56.062", format='%H:%M:%OS', tz='UTC')
[1] "2012-06-07 13:29:56.061 UTC"
> as.POSIXlt("13:29:56.063", format='%H:%M:%OS', tz='UTC')
[1] "2012-06-07 13:29:56.063 UTC"
Run Code Online (Sandbox Code Playgroud)

我注意到这个URL提供了背景信息,但没有解决我的问题: 在R中调用strptime时毫秒难题.

此URL也触及该问题但未解决此问题:R xts:索引中的.001毫秒.

在这些情况下,我确实看到以下内容:

> x <- as.POSIXlt("13:29:56.061", format='%H:%M:%OS', tz='UTC')
> print(as.numeric(x), digits=20)
[1] 1339075796.0610001087
Run Code Online (Sandbox Code Playgroud)

URL似乎也表明这只是一个显示问题,但我注意到使用"%OS3"没有选项行的语句似乎没有拾取正确的位数.

我在Windows下使用的版本是32位2.15.0,但这似乎存在于R的其他情况下.

请注意,我的原始数据是CSV文件中的这些日期时间字符串我必须找到一种方法,将它们从字符串转换为正确的毫秒时间.

time r rounding-error rounding milliseconds

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

我怎么能将Lua嵌入Python 3.x?

是否有可能将Lua嵌入到Python 3.x中?如果是这样,我怎么能在我的Python程序中运行和执行Lua脚本?例如,语言之间的交互有多好,Lua可以访问所有Python的变量和类,Python是否可以访问Lua的所有信息?

python scripting lua embedding python-3.x

5
推荐指数
2
解决办法
5549
查看次数