标签: managed

如何从标准的非托管非.NET应用程序调用C++/CLI(.NET)DLL?

在非托管的世界中,我能够编写__declspec(dllexport),或者使用.DEF文件来公开一个能够调用DLL的函数.(由于在C++中使用__stdcall进行名称修改,我将别名放入.DEF文件中,以便某些应用程序可以重用某些导出的DLL函数.)现在,我感兴趣的是能够从一个单独的入口点函数公开.NET程序集,以非托管方式,但让它在DLL中进入.NET样式的函数.这可能是一种简单而直接的方式吗?

我所拥有的是第三方程序,我通过DLL(插件)扩展,实现了一些复杂的数学.但是,第三方程序无法让我可视化计算.我想以某种方式采用这些预先编写的数学函数,将它们编译成一个单独的DLL(但在.NET中使用C++/CLI),然后在函数中添加钩子,这样我就可以在.NET中渲染一些内容.用户控制.我不确定如何将.NET内容与非托管内容混合,或者谷歌如何完成此任务.

关于托管/非托管网桥的具体建议,或以我所描述的方式完成渲染的替代方法将会有所帮助.谢谢.

.net user-controls c++-cli managed

8
推荐指数
3
解决办法
4326
查看次数

使用C++/CLI包装非托管C++ - 一种正确的方法

如标题中所述,我希望我的旧C++库在托管.NET中运行.我想到了两种可能性:

1)我可能尝试使用/ clr编译库并尝试"It Just Works"方法.

2)我可能会将托管包装器写入非托管库.

首先,我想让我的库快速工作,就像在非托管环境中一样.因此,我不确定第一种方法是否会导致性能大幅下降.但是,实现它似乎更快(不是一个正确的词:-))(假设它对我有用).

另一方面,我想到了编写包装器时可能出现的一些问题(例如,如何包装一些STL集合(vector例如)?)我想写一个与非托管C++驻留在同一个项目中的包装器 - 是合理的方法(例如MyUnmanagedClass,MyManagedClass在同一个项目中,第二个包装另一个)?

你会在那个问题上提出什​​么建议?哪种解决方案能够让我更好地了解生成的代码?

提前感谢您的任何建议和线索!

干杯

.net c++ unmanaged managed wrapper

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

当我运行我的C#应用​​程序时,Visual Studio报告它已经加载了一个带有(看起来像)随机生成的名称的托管二进制文件

当我运行我的C#应用​​程序时,Visual Studio报告它已经加载了一个带有(看起来像)随机生成的名称的托管二进制文件.

例如:

'WindowsFormsApplication1.vshost.exe' (Managed): Loaded 'ehmgcsw7'
Run Code Online (Sandbox Code Playgroud)

要么:

'WindowsFormsApplication1.vshost.exe' (Managed): Loaded 'jvo4sksu'
Run Code Online (Sandbox Code Playgroud)

这是什么,为什么它的名字(貌似)是随机生成的?

c# managed visual-studio

8
推荐指数
2
解决办法
194
查看次数

使用Windbg SOS Extension逐步执行源代码

我最近从原生代码转换为托管代码编程.我正在使用.NET.

由于我已经使用Windbg很长一段时间了,我也想用它来进行托管代码调试.

我的搜索带我进入SOS(罢工之子)扩展,这似乎有一些强大的命令.

即使我理解SOS中使用的大多数命令,我也无法找到正确执行源代码的方法,就像我可以使用本机代码的p和t指令一样.

这使调试体验变得困难,我真的想在调试时逐步调试代码.

我对此进行了一些研究,发现使用6.7.05.0版本的Windbg可以实现这一点,其中MS似乎已经发布了集成的托管调试,但在后续版本中回滚.

尽管如此,我对通过SOS进行调试时能够直播"源"代码非常感兴趣.特别是因为它现在真的阻碍了我的调试体验.

有没有办法实现这个目标?

任何有关如何执行此操作(或实际解决方法)的帮助表示赞赏.

.net debugging windbg managed sos

8
推荐指数
2
解决办法
4833
查看次数

如何在新的Windows 8.1商店应用程序上使用SQLite(Visual Studio 2013)

所以,我在Windows 8.1机器上安装了Visual Studio 2013.我想试验它并创建一个新的Windows应用商店网格应用.我想在SQLite数据库上保留数据,显然是WinRT应用程序的首选数据库.

快速找到所需的vsix链接,以便能够使用SDK:SQLite下载页面,并下载sqlite-winrt81-3080002.vsix.

安装它,然后在我的项目中,添加对新安装的SDK的引用(右键单击引用,添加引用,导航到Windows,选择扩展并勾选SQLite for Windows Runtime(Windows 8.1)复选框.

还很快发现它不能在任何CPU上编译.在Configuration Manager上,选择了Debug,x64活动平台,这使我能够编译应用程序.

最后,在尝试使用命名空间时,SQLite我注意到VS 2013没有识别它.尝试了很多东西,例如直接添加对.dll的引用,探索组件以查看哪些命名空间可用(哪些没有显示任何内容),而且我很快就没有想法了.因为它有点新鲜,并且利益有限,谷歌,救世主,今天不想救我.

那么,如何在针对Windows Runtime 8.1的Visual Studio 2013项目中使用SQLite SDK呢?

这些是我的csproj文件的内容

更新 愚蠢的我,以为在地铁风格的土地上没有管理的土地(.net).很抱歉造成任何混淆.

c# sqlite managed visual-studio-2013 windows-8.1

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

C#unmanaged dll导出(如何工作)

我发现,将出口库管理代码,非托管,所以你可以使用它的非托管像C/C++语言.但我没有找到任何可以解释它是如何完成的(这是我更感兴趣的)

我正在寻找信息,教程,文章,代码源或任何可以帮助我理解其工作原理的东西

另外,如果您在书签中找到了一些钩子/绕道资源,我也很乐意阅读它们:)

在此先感谢您,祝您度过愉快的一天.

c# hook export unmanaged managed

8
推荐指数
2
解决办法
6752
查看次数

C#NHibernate和Oracle托管客户端

我有一个大项目隐藏另外16个项目(测试,网站和应用程序,如核心,电子邮件等:).我使用C#MVC4作为我的主要网站项目.如果我使用非托管客户端需要我做一个项目文件夹/ bin记录库Oracle.DataAccess.dll,一切正常(我必须在Web.config中设置(更改) - > param:

<connectionStrings>
   <add name="PC13" connectionString="User Id=TEST; Password=TEST; Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBTEST)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = DBTEST)));" />   
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

并且数据库连接正常,没有ORA例外TNS_NAME).当我只使用像TEST这样的别名时,我必须使用tnsnames.ora将数据源设置为完整路径我收到消息"Exception:ORA-12154:TNS:无法解析指定的连接标识符",但是如果我为别名设置了完整的tns代码 - >一切都很棒.

我使用hibernate.cfg.xml文件:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
   <session-factory>
      <property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
      <property name="show_sql">true</property>
      <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
      <property name="command_timeout">60</property>
      <property name="cache.provider_class">NHibernate.Caches.SysCache2.SysCacheProvider, NHibernate.Caches.SysCache2</property>
      <property name="cache.use_second_level_cache">true</property>
      <property name="cache.use_query_cache">true</property>
      <property name="cache.default_expiration">120</property>
   </session-factory>  
Run Code Online (Sandbox Code Playgroud)

我的Web.config文件(对于托管客户端添加oracle.manageddataaccess.client部分):

<connectionStrings>
   <add name="PC13" connectionString="User Id=TEST; Password=TEST; Data Source=DBTEST;" />   
</connectionStrings>

<oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="DBTEST" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBTEST)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = DBTEST)))"/>
      </dataSources>
    </version>
</oracle.manageddataaccess.client>
Run Code Online (Sandbox Code Playgroud)

我在Visual Studio 2010 SP1 32位(Win …

c# oracle nhibernate managed visual-studio

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

在.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
查看次数

如何将非托管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
查看次数