标签: managed

在.NET中使用Java JAR文件

有哪些选项/方法/软件可用于将JAR文件转换为托管.NET程序集?请在答案中提供所有商业和非商业方法.这些不包括需要在主机上安装Java的解决方案.

.net java jar managed

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

完全托管数据库解决方案?

嘿,我正在寻找一个完全用C#编写的开源数据库引擎(没有任何原生dll,没有混合模式等等).它应该支持对表(INSERT,UPDATE,SELECT,DELETE和TRUNCATE)和事务的基本操作.不需要SQL支持.

谢谢.

.net c# database transactions managed

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

如何在非托管C++ DLL和C#应用程序中声明常量字符串?

当然,我在启动时通过回调将我的const字符串值从我的C++传递到我的C#中,但我想知道是否有一种方法可以在C++头文件中定义它们,然后我也可以在C#中引用它们.

我已经用枚举这样做,因为它们很容易.我在我的C++库项目中包含一个文件(通过顶部有一个pragma的.h文件)和我的C#应用​​程序(作为链接):

#if _NET
public
#endif
enum ETestData
{
    First,
    Second
};
Run Code Online (Sandbox Code Playgroud)

我知道它听起来很乱,但它的工作原理:)

但是......我怎么能用字符串常量做同样的事情 - 我最初认为平台之间的语法太不同了,但也许有办法呢?

使用涉及#if _NET,#define等的巧妙语法?

使用资源文件?

使用C++/CLI库?

有任何想法吗?

c# c++ string unmanaged managed

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

如何将非托管dll和托管程序集合并到一个文件中?

来自PHX Software的 SQLite 将托管程序集(System.Data.SQLite)与非托管DLL(SQLite 32位或64位dll)组合到一个文件中,并设法将它们链接在一起.

我该怎么做呢?我是否需要将托管程序集嵌入到非托管dll中,反之亦然?

即.我的问题是:

  1. 我需要以哪种顺序执行此操作?
  2. 为了做到这一点,我需要哪些工具或知识?
  3. 如何(如果不同)从托管代码中的非托管dll链接到导出的函数?

我问这个的原因是我想构建一个托管的zLib包装器.我知道在.NET中有托管类,但从经验来看它们有点受限(并且有点愚蠢,因为它们没有做适当的缓冲),所以我想创建自己的副本,也因为我想要学习如何做到这一点.

那么有谁知道我需要做什么以及如何做?

我发现了以下内容:

我将尝试这个,但任何其他可用的信息也会很好.

embed dll assemblies unmanaged managed

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

在Objective-C中更新Core Data中所有或某些托管对象的值的最有效方法是什么

我用谷歌搜索和研究,但无法找到迭代我的数据模型中的所有或一些托管对象的最佳方法,并更新每个托管对象的属性值,在我的情况下,更新到当前日期.托管对象上下文和持久性存储委托方法都在我的Application Delegate中.我可以在程序的表视图中添加一些代码,但我觉得调用方法来更新这些值会更有效,因为它们可能不一定返回到表视图.

最终,我希望在我的应用程序的任何位置循环遍历我的托管对象并更新值.

如果您需要更多信息,请与我们联系.谢谢!

-COY

iphone managed core-data objective-c

7
推荐指数
3
解决办法
2286
查看次数

从非托管代码调用托管.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
查看次数

在托管代码中,我应该保持什么才能保持良好的性能?

我原来是C++程序员,在C++程序中,程序中的每个进程都绑定到您的代码,即除非您希望它发生,否则什么都不会发生.并且根据您编写的内容分配(并释放)每个内存.因此,性能是您的全部责任,如果您做得好,您将获得出色的表现.

(注意:请不要抱怨没有自己编写的代码,如STL,毕竟这是一个C++非托管代码,这是重要的部分).

但是在托管代码中,例如Java和C#中的代码,您无法在某种程度上控制每个进程,内存是"隐藏"的,或者不受您的控制.这使得性能相对不为人知,大多数情况下你担心性能不佳.

所以我的问题是:我应该关注哪些问题和粗线,并牢记在托管代码中实现良好的性能?

我只能想到一些做法,例如:

  • 意识到拳击和拆箱.
  • 选择最能满足您需求并且运营成本最低的正确产品系列.

但这些似乎永远不够,甚至令人信服!实际上也许我不应该提到它们.

请注意我不是要求C++ VS C#(或Java)代码比较,我刚才提到C++来解释这个问题.

c# performance garbage-collection unmanaged managed

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

CoCreateInstance返回"未注册的类"

我已经在这几个小时了,它开始变得沮丧.:(

我有一个我在.NET 4.0中创建的COM DLL,我希望能够使用VC++ 6中的遗留应用程序访问它.它对COM可见,我已经成功创建了TLB和SNK文件,将其移动到使用传统C++代码的机器,#imported TLB,一切编译都很好.

如下:

RegAsm ProtracFunctions.dll/codebase

gacutil/i ProtracFunctions.dll

他们都很成功.

当我启动我的应用程序时,只要我点击CoCreateInstance,我就会收到消息"Class not registered".

我在RegEdit中注意到我的DLL似乎已经注册了.那是我做了一些研究,下载了ProcMon,并意识到它在不同的位置.CLSID略有不同,如果我尝试修改ProtracFunctions.reg文件(使用ProcMon提取的GUID)RegAsm给我的,它会对ProcMon产生影响(比"NAME"更多"SUCCESS"消息至少找不到"消息",但我似乎错过了,大量的注册表位置.如关键的"TreatAs","InprocServerX86"等.

如果有人能告诉我:

A)我首先做错了什么

要么

B)当您"注册"COM DLL时,确切地添加了哪些注册表值的列表,以便我可以自己进行并手动执行.(不太理想,我意识到).

TIA!

我的代码:

CoInitialize(NULL);
CComQIPtr <ProtracFunctions::IDockingStation> spTestCom;
HRESULT hRes = spTestCom.CoCreateInstance(CLSID_ProtracDCS, 0, CLSCTX_ALL);

if (SUCCEEDED (hRes))
{
    printf("Created the instance");

    unsigned char Ret;
    unsigned char ErrCode;
    SAFEARRAY *pSA;

    spTestCom->DockConnect(3, 19200, &Ret);
    spTestCom->GetTagReads(1, &ErrCode, &pSA); 

    spTestCom->PowerOffReader(1, &Ret);
    spTestCom->DockDisconnect();

    spTestCom.Release ();
}
else
{
   _com_error error(hRes);
   LPCTSTR errorText = error.ErrorMessage();

   AfxMessageBox(errorText);

   //automatic cleanup when error goes out of scope
}
Run Code Online (Sandbox Code Playgroud)

补充说明:

开发机器运行Win …

c# c++ dll managed

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

Oracle Managed ODP.NET找不到tnsnames.ora

我的托管ODP.net webapp在本地工作,但在将其部署到服务器时,它失败并显示错误:

"TNS:监听器当前不知道连接描述符中请求的服务"

从环顾四周看,这似乎是因为它无法访问tnsnames.ora文件.

我试过以下但没有成功:

  • 将tnsnames.ora文件(本地工作的文件)放入[oracle home] [product] ... \network\admin文件夹.
  • 在Managed ODP的web.config部分中设置指向环境变量的TNS_ADMIN设置.
  • 在Managed ODP的web.config部分中设置TNS_ADMIN设置直接指向tnsnames.ora文件.

在服务器上,尝试运行tnsping会产生错误TNS-03502:未找到消息3502; product = NETWORK,facility = TNS没有消息文件

我错过了什么?

.net oracle managed odp.net

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

为什么我们需要/使用托管代码(超过原生代码)?

我在这里遗漏了一些基本的东西.从源语言编译成字节码(java)或中间语言(.NET)然后从JVM或CLR内部运行它们有什么用?


使用托管代码的性能(无论是轻微还是大)都有所下降,但有哪些好处?我知道有垃圾收集和内存管理,但即便如此,将源代码直接编译为原生而不需要这个中间级别也不是更好吗?

另外(我在这里添加它,因为它与问题直接相关) - 显然,Windows 10 Universal应用程序是使用.NET Native编译的,它编译为本机机器代码.我很好奇为什么以前没有使用所有.NET程序.

c# java jvm managed .net-native

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