首页 > TAG信息列表 > c-cli

C#-本机C Dll调用C/C++LI混合模式Dll-未处理的异常

我有一个由旧版应用程序动态加载的本机C Dll.该dll的目的是允许基于某些应用程序事件来覆盖应用程序行为.我有一个C#dll,其中包含我从本机C dll通过混合模式C/C++LI dll调用以增强这些应用程序事件的函数.使用此体系结构的应用程序在Windows 2000上可以完美运行. 该应用程序还可以

在C/C++LI中创建托管类和名称空间时出现问题

我在用C/C++LI创建带有名称空间的托管类时遇到问题. 我要执行以下操作: #pragma once #include "abc.h" #ifdef _MANAGED #using <system.dll> using namespace System; using namespace System::IO; using namespace System::Collections::Generic; using namespace System::Globa

使用C#,C/C++LI和非托管C的应用程序的内存配置文件工具

我正在使用C#,C/C++LI和非托管C库的64位应用程序上工作. 我对找出非托管代码中的内存泄漏特别感兴趣. 我尝试使用ANTS事件探查器-尽管它对于C#应用程序非常有用,但它并没有为非托管代码中的内存泄漏提供太多信息. 我知道PurifyPlus是C语言的好工具,我发现它也支持.NET应用程序.但是

C#/ CLI pin_ptr

C/C++LI的pin_ptr是否等于C#的fixed statement?解决方法:是的,差不多. 一些差异: >固定的语句创建自己的作用域块. pin_ptr的范围是从初始化到封闭块的末端.>固定是显式语言功能. pin_ptr是通用语言功能(C模板)的使用.(请参阅注释.) 可能还有更多类似上述的区别.但是,当在两种语言之

在C函数之间传递C#类

我想知道是否可以在c函数之间传递我调用的C#对象?我已经可以从本机代码调用C#dll,但是现在我需要在c函数之间传递一个对象,这也意味着我需要在头文件中声明它. 在头文件中定义它时,出现以下错误: BOOL Exists(Api ^api); Error 60 error C3395: 'ApiBase' : __declspec(dllexpor

如何将类从C代码返回到C#

我从C#代码调用C方法.除了将多个参数返回给C#之外,一切工作正常. 在我的情况下,这些参数是:int x,y,width,height; 我要做的是将类或结构从C代码返回到C#. 我提供了一个示例,因此我想的更加清楚.我知道一种方法是使用元帅课程,也许是唯一的方法. C#代码 public class ImageMatch {

C/C++LI或C#,用于在Windows上创建快速,现代和响应迅速的GUI

目前,我被分为两种语言.我几乎要完成当前应用程序的编程工作,这需要非常快.它可以在多种载荷条件下计算任何种类的中空玻璃结构. 我只是不知道用C/C++LI编写它是否是正确的选择.例如,在互联网上,我什至从未读过名称“ C/C++LI”,但每个人都建议学习C#. C/C++LI的真正缺点是什么?从我

C CLI结构到字节数组

我有一个代表有线格式数据包的结构.在这种结构中是其他结构的阵列.我有通用代码可以很好地处理大多数情况,但是这种结构数组的情况是将编组器抛出一个循环. 不安全的代码是行不通的,因为我无法获得带有数组的结构的指针(argh!). 我从this codeproject article可以看到,有一个非常不

通过互操作将整数数组从C#传递到本机代码

我有一个Blah.cs: public unsafe static int Main() { int[] ai = {1, 2, 3, 4, 5}; UIntPtr stai = (UIntPtr) ai.Length; CManagedStuff obj = new CManagedStuff(); obj.DoSomething(ai, stai); } 然后是ManagedStuff.cpp: void CManagedStuff::DoSomething(int^ _ai,

如何在C/C++LI中将C short *传递给托管C#程序集

我在将参数从C/C++LI代码传递到.NET C#函数时遇到麻烦. 在C中,我有类似以下内容的内容: void SomeFunction(short *id) { CSharpClass::StaticClassInstance->SetValue(id); } 在C#端,该函数使用ref参数声明为: public void SetValue(ref short id) { id = this.internalIdFi

C到C#事件处理

因此,我有了C#WinForm应用程序,从中可以调用C CLI MFC dll库. 但是我的C库中有一些事件,即使此事件发生在该库的本机(非CLI)部分中.我需要从C#应用程序中调用一些代码,并可能在此事件上获得一些数据. 因此,当从客户端调用此本机函数时: bool __stdcall ClassName::WorkQuery() {

使用Visual C for C代替C/C++LI

我知道如何使用C语言制作控制台程序进行编程,但是现在我想使用Windows界面编写程序. MS VS 2010使用拖放功能对C Windows应用程序进行编码使事情变得容易.滴设计系统. (.net Framework)但是,Visual Studio似乎使用了我不熟悉的C/C++LI. 是否有仅使用C的IDE?是否有任何具有易于使用的

尽管使用导出的符号链接到.lib文件,但是从托管C到非托管C的链接错误链接

尽管遵循有关使用和从C/C++LI包装dll链接到非托管C代码的各种文章,但我无法解决这些链接问题. 1>MyClassAdapter.obj : error LNK2028: unresolved token (0A00000A) "public: __thiscall MyClass::~MyClass(void)" (??1MyClass@@$$FQAE@XZ) referenced in function "public: void

当在托管类中调用非托管函数时,C/C++LI System.AccessViolationException

我在C中有一个本机回调函数,我们可以这样说: void ::CallbackFunction(void) { // Do nothing } 现在,我还有另一个本机功能: void ::SomeNativeFunction(void) { m_callback = std::tr1::bind(&::CallbackFunction, m_Tcy); // save in m_callback | m_Tcy is the class wher

如何卸载托管的c dll?

A.dll是本机c dll,B.dll是托管c dll. A.dll取决于B.dll,因此在加载A.dll时,会自动加载B.dll,但是在卸载A.dll之后,仍会加载B.dll.仅A.dll依赖于B.dll,为什么无法卸载B.dll?如何卸载托管C DLL?我正在使用vs2010. 谢谢解决方法:一旦CLR加载了托管程序集,就无法卸载它.唯一的方法是杀死A

混合托管和非托管C代码?

关于将托管C与非托管C混合,我有几个具体问题: >如果我在类/结构声明中省略了ref和value,那是否会自动使类/结构不受管理?或者我是否还需要包含#pragma unmanaged和#pragma managed指令? >非托管和托管类型的兼容性如何?例如,我可以在托管类中拥有一个非托管对象,对吧?我可以将非托管类/

什么是CLI / C?它与“正常”c有什么不同?

让我首先澄清一下’正常’C的意思 – 我现在正在阅读Walter Savitch的“C中的问题解决”.据我所知,这不是专门为微软或Unix编写的.所以我的问题是,我在本书中学到的东西(我用于获取c的普遍知识)与我在阅读有关CLI C的内容有何不同? 如果我使用Visual C,CLI C就是我会遇到的吗?我完全

C/C++LI中的值类

在C /CLI中使用值类有什么好处.值类包含成员函数吗?解决方法:值类是ValueType – 这意味着,无论何时将它分配给同一类型的另一个变量,整个对象都会被复制到另一个变量中,从而留下两个独立的副本.这方面的例子是基本的数字数据类型,如int,bool或double. ValueTypes是密封的,这意味着

用于在Windows控制台中运行的游戏的C控件

我正在尝试制作一个在命令提示符下运行的小型2人游戏.在我开始研究球员控制之前,一切都很好.因此,为了捕获键盘键,我认为最好的解决方案是使用getch()函数.这是因为getch()在运行中获取键,而不在屏幕上显示,等待输入或其他键被按下. 据我所知,实现这一目标的代码非常简单: c=getch(

为什么C CLI索引属性在C#中不起作用?

有两个项目,One C CLI和另一个C#项目. C CLI程序在C#项目中引用. 一切都很好,除了索引属性不起作用.C CLI代码: property Nullable< int> PVarInt[System::String^] { Nullable<int> get(System::String^ inx){ } void set(System::String^ inx, Nullable< int> newx)

如何在基于C的dll或基于CLI的dll中包装C类?

我被告知要将我在C语言中的写入类导入到dll中,然后在c#应用程序中使用该dll.在this guide之后我创建了dll,但我不能简单地在C#应用程序中使用它,因为它有一些问题: >我应该为工厂功能的返回类型放置什么? > const wchar_t *是什么,它是我的构造函数参数类型?>我如何检索和使用我的函数

为什么本地c与c interop表现不佳?

我在下面发布了一些代码来测试使用Visual Studio 2010从c / cli本机c和c#调用方法的性能(以毫秒为单位).我有一个单独的本机c项目,它被编译成dll.当我从c调用c时,我得到的预期结果比管理对应的快得多(大约4倍).但是,当我从c / cli调用c时,性能慢了10倍. 从c / cli调用本机c时这是一

c# – 在std :: function中包装委托?

我有一个本机的,非托管的C库,我希望将其包装在托管C类中,以提供干净且类型安全的方式来从C#访问非托管类,而无需执行PInvoke. 我试图包装的方法有以下签名: void Unmanaged::login( const std::wstring& email, const std::wstring& password, std::function<void()> on_succ

为什么C中有这么多字符串类型?

我喜欢C,我有一本名为Full and Full C和2 C的C书,我发现这些语言很棒,因为它们具有令人难以置信的功能和性能,但由于这些不同的类型,我必须结束我的许多项目. 我说要有std :: string,LPCSTR,System :: String,TCHAR [],char s [] =“ss”,char * s? 这引起了巨大的麻烦,主要是在GUI

c# – 使用C/C++LI作为“中间件”从本机C使用.NET类

我必须使用本地C应用程序在C#.NET中创建的类/程序集. 我想我需要在C/C++LI中创建一个包装类,它将在头文件中公开本机方法,但是根据需要使用.NET类.我不清楚的是如何将数据类型从.NET转换为标准C类型. 有没有人可以学习一些示例代码? 我发现的文字只有:http://msdn.microsoft.com/en-u