问题标签 [managed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 将非托管 dll 嵌入托管 C# dll
我有一个使用 DLLImport 使用非托管 C++ dll 的托管 C# dll。一切都很好。但是,我想将该非托管 DLL 嵌入到我的托管 DLL 中,正如 Microsoft 在那里解释的那样:
所以我将非托管 dll 文件添加到我的托管 dll 项目中,将属性设置为“嵌入式资源”并将 DLLImport 修改为:
其中“Wrapper Engine”是我的托管 DLL 的程序集名称“Unmanaged Driver.dll”是非托管 DLL
当我跑步时,我得到:
访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
我从 MSDN 和http://blogs.msdn.com/suzcook/看到这应该是可能的......
managed - 尝试使用托管 C++ 包装本机 C++ 类时,我得到 LNK2028
尝试使用托管 c++ 类包装本机 cpp 类。
一切看起来都不错,但由于某种原因它不会编译。
得到以下链接器错误:
错误 25 错误 LNK2028:未解析的令牌 (0A0002CE) 错误 27 错误 LNK2019:未解析的外部符号
任何想法如何解决这个问题?:\
好吧,这是其中一个功能的完整错误:
错误 20 错误 LNK2028:未解析的令牌 (0A0002CF) “public: bool __thiscall RCSclient::ResumeChannel(char *,int,__int64)” (?ResumeChannel@RCSclient@@$$FQAE_NPADH_J@Z) 在函数“public: bool __clrcall RCSClientWrapper”中引用::RCSclientWrapper::ResumeChannel(class System::String ^,int,class System::DateTime ^)" (?ResumeChannel@RCSclientWrapper@RCSClientWrapper@@$$FQ$AAM_NP$AAVString@System@@HP$AAVDateTime@4@ @Z) RCSClientWrapper.obj RCSClientWrapper
试图添加 user32.lib 没有结果..
提供
c++ - 如何将结构的 C++/CLI 数组编组为非托管 C++
我正在寻找将结构数组传递给非托管 C++ dll 的正确语法。
我的 dll 导入是这样调用的
在我的客户代码中,我有
我知道 System::Runtime::InteropServices::Marshal 有很多有用的方法来做这样的事情,但我不确定该使用哪个。
user-interface - C ++中托管和非托管类型之间的转换?
我认为,当我在 C++ 中使用 GUI 时,文本字段存储为托管字符串。我需要一种将它们转换为标准整数、浮点数和字符串的方法。有什么帮助吗?
.net - 如何将 double* 转换为数组(6)
我有一个返回 6 个双精度数组的函数。
我想将此返回值转换为托管代码。
我收到此错误:
我该怎么做?
谢谢。
c++ - 如果 ANSI C++ 不支持多线程,非托管 C++ 应用程序如何实现多线程?
我听说 C++ 不提供对多线程的本机支持。我假设多线程 C++ 应用程序依赖于多线程的托管代码;也就是说,例如,一个 Visual C++ 应用程序使用 MFC 或 .NET 或类似的东西来提供多线程功能。我进一步假设这些托管代码功能中的一些或全部对于非托管应用程序是不可用的。但是我已经阅读了有关非托管多线程应用程序的信息。这怎么可能?我的哪个假设是错误的?
com - HOWTO:在 WindowsCE Compact Framework 上从非托管 C++ 调用托管 C# 接口
我有大量非托管 Windows CE 5 C++ 代码,通过将它与在 Windows CE 6 和 Compact Framework 上用托管 C# 编写的大量更新的业务和通信逻辑相结合,提供了一个我想在新产品中使用的 UI。
UI 可能知道业务逻辑,但我希望业务逻辑不了解 UI,以便我以后可以用托管版本或我选择作为前端的任何其他 UI 替换它。
我找到了一篇文章,描述了如何在 Windows 世界中使用 COM 作为桥梁,但在 WinCE 下的 .NET CF 中应用它时遇到了困难。过去我导入类型库,使用COM调用(CoInitialize()、CoCreateInstance())来获取其他Windows平台上的接口指针,这就是我现在追求的策略:直接在非托管 C++ 库来访问我的托管库中的 C# 接口,假设 WinCE 中提供了相同的工具。
这是我的问题:类型库。它在我的托管 C# 库中不可用,因为我过去通过 '#import "SomeCPPLibrary.dll"' 语句使用它。我相信它隐藏在 .dll 程序集中,以与过去不同的方式存储,因此不能通过库本身的#import 直接使用。我认为我可以#import 一个 typelib,但是我找不到从我的托管 .dll 中提取 typelib 的方法,虽然我可以将一个接口定义文件 (.idl) 组合在一起并使用平台的 midl.exe要从中生成 .tlb,不能保证我的 .idl 以及由此产生的 .tlb 会真正匹配我的 C# .dll 中的内容。我什至不知道平台 midl.exe 是否以这种方式工作,但假设它确实如此。
我在吠叫错误的树吗?是否可以通过相应的 COM 接口在非托管 C++ 中使用托管 C# 接口?
在其 AssemblyInfo.cs 文件中设置 [assembly: ComVisible(true)] 属性是否可以通过 AssemblyInfo.cs 定义的 GUID 在非托管世界中通过 COM 使用托管程序集中的所有接口,还是我必须做更多的事情?
如何从托管的 .dll 中获取类型库,以便我的非托管 C++ 库可以#import 它?
我尝试将我的托管 C# 库项目作为参考添加到非托管 C++ 库项目中,但这似乎没有帮助。在这种情况下,这样的参考是否相关?
有没有更好的方法来解决从非托管 C++ 世界调用托管 C# 代码的基本问题?我刚刚在这里读到的内容是一个混合模式库,它带有一个托管翻译层,以弥合非托管/托管差距。我不确定这是一个好的策略,因为呼叫响应速度是一个重要因素,但从长远来看可能会更好,因为我计划在某个时候将 UI 重写为托管 C#,从而将所有的努力都放在抛弃 UI 而不是使用更永久的业务/通信逻辑?不管这个问题的答案如何,我仍然想解决使用 COM 的问题,如果只是出于好奇。
native - 本机代码和托管代码之间的区别?
例如,在查看 GlowCode 分析器网站时,它会说:
“GlowCode 6.2 和 x64 配置本机、托管和混合 C++、C#、.NET 代码”
他们的意思是什么?
c# - 将托管 (C#) 字符串 [] 数组传递给 COM DLL
设置:
我有一个 COM DLL,它调用托管 C# DLL 中的一个方法。此函数返回一个 C# string[] 数组,该数组被封送为 SAFEARRAY。
问题:
当我尝试访问安全数组中的字符串时,我只得到字符串的第一个字符。我究竟做错了什么?
编码:
谢谢你的帮助,-
肖恩!
c++ - 托管 C++ 中托管对象的分配
使用 gcnew 分配对象后是否需要检查 nullptr?