Tag: dll

C ++ DLL LPCTSTR到C#字符串

我试图从C ++ DLL到C#获取字符串。 它输出不正确的符号 – {栠搂珯获긋ݳݳ赠琹玴ɡݳݳ} 这是我的代码:C ++ DLL _declspec(dllexport) int __stdcall myClass(LPCTSTR& z) { z = _T(“Test String”); return 0; } 我的C#代码读取C ++ DLL: [DllImport(“ecrClassDll.dll”, CharSet = CharSet.Unicode)] static extern void myClass(StringBuilder z); static void Main(string[] args) { StringBuilder z = new StringBuilder(); myClass(z); }

Shadow Copying,以及从任意文件夹加载的混合C#和C ++ DLL

我有一个VS 2005 C#项目,它使用一个特殊的Plugin文件夹来加载额外的DLL(用作资产转换过程中的节点)。 我在这个文件夹中混合使用C#和C ++ DLL。 我遇到的问题是,启用卷影复制时,C ++ DLL拒绝使用Assembly.LoadFrom加载。 我试图创建一个自定义应用程序域,并使用Load,但这也失败了。 最后,我尝试在byte []数据中读取DLL并使用Load on – 再次,只有C#DLL才会以这种方式工作,并显示错误“附加信息:无法validation的代码失败策略检查。(HRESULTexception:0x80131402) ”。 网上的一篇文章促使我在构建特定的DLL时尝试使用/ clr:safe,但由于Microsoft代码中存在数千个错误而导致它无法构建…(显然) 禁用阴影复制后,LoadFrom适用于所有DLL。 该应用程序本身是Maya的一个插件,这曾经与Maya 8.5一起使用,但在2008/2009年失败(如果启用了Shadow Copying)。 我们真的更喜欢使用Shadow Copying,因为它可以在应用程序运行时阻止DLL文件锁定(Plugins文件夹存储在Perforce可以在应用程序运行时更新的位置)。 关于如何说服Shadow Copying使用自定义文件夹和混合使用C#/ C ++ DLL而没有这些问题的任何想法?

如何在C ++运行时组件中的Windows Phone 8.1 XAML App中使用C ++ DLL

我想在我的C#windows phone 8.1 XAML visual studio项目中使用C ++ dll(为arm编译,x86)。 我创建了一个C ++运行时组件来与我的C ++代码进行交互。 此代码需要预编译的dll。 我将我的lib文件添加到我的项目设置中。 编译运行正常。 如果我使用Windows Phone 8.1模拟器启动我的应用程序,我会得到: The specified module could not be found. (Exception from HRESULT: 0x8007007E) 我的Visual Studio项目结构: C# Windows Phone项目 Windows项目 共享XAML 托管C ++ RuntimeComponent Windows Phone RuntimeComponent Windows 共享C ++代码(这里使用的DLL) 我尝试过的事情: 我将dll拖放到我的C ++项目中,并将内容属性更改为true。 我将dll拖放到我的C#项目中并启用了将dll复制到输出目录的选项 那么,我如何在C ++运行时组件项目中使用.lib / .dll库? 更多细节: 我想使用Angle(允许OpenGL代码在Windows / […]

C ++ dll的C#包装器; “运行时检查失败#0 – ESP的值未在函数调用中正确保存。”错误

这是C ++ DLL中的代码: extern “C” _declspec(dllexport) int testDelegate(int (*addFunction)(int, int), int a, int b) { int res = addFunction(a, b); return res; } 这是C#中的代码: public delegate int AddIntegersDelegate(int number1, int number2); public static int AddIntegers(int a, int b) { return a + b; } [DllImport(“tester.dll”, SetLastError = true)] public static extern int testDelegate(AddIntegersDelegate callBackProc, int […]

IBM DB2问题 – System.BadImageFormatException:无法加载文件或程序集IBM.DB2.DLL或其依赖项之一

我收到上面提到的错误消息。 我已经做了足够的研究并尝试了各种选择,但仍然没有运气。 以下是详细信息: OS: Windows 7 64 bit version Visual studio version: 2013 Premium .NET framework version is : 4.0.30319 ASP.NET version: 4.0.30319.34249 IIS version: 7.0 DB2 installed path: C:\Program Files (x86)\IBM DLL path: C:\Program Files (x86)\IBM\SQLLIB\BIN\netf40\IBM.DB2.dll DLL Version: 9.7.4.4 我还将我的解决方案配置管理器平台更改为任何CPU ,并且我还通过将属性启用32位应用程序设置为True来更改应用程序池中的设置。 但仍然得到同样的错误。 还有其他解决方法吗? 请帮我提一下你的建议。

为C#和C ++应用程序编写DLL

我需要编写一些DLL,它们都可以从C#应用程序和C ++应用程序访问。 最初,我想通过在C#中编写DLL并从C#和C ++应用程序链接到它来节省时间/精力。 这种方法是明智的,还是应该使用C ++编写DLL?

在C#中引用dll

当我在c#中引用一个dll时,它有我的本地路径。 因此,当我在另一台计算机上运行时,它无法找到它。 如何添加dll以便它不在我的本地文件夹中? 当我在另一台计算机上运行我的程序时,它说“找不到命名空间,你错过了使用指令或程序集引用吗?” 我一定是在搜索错误的关键词,因为我无法在任何地方找到它。

在x64中从C#调用c ++代码,所有参数都移一

我的c ++ dll: int test2::CallMe(int y) { return y; } c#代码: [DllImport(“test2.dll”,CharSet = CharSet.Anci)] private static extern int CallMe(int y); Console.WriteLine(CallMe(7)); 如果dll和测试程序是在x86中编译的,我得到一个print:7但是如果我在X64上编译它们用于c ++和X64或任何CPU用于c#,则打印为:0 有什么建议吗? 编辑:问题是调用,因为在调试器中我看到CPP收到0,或者在struct的情况下为null。 编辑2:使用def文件导出函数。 如果我使用extern“C”导出函数它工作正常,但我不能导出calss的function,或者我不知道如何 编辑3:显然参数实际上不是零,只有最后一个参数为零,所有参数都被移位,第二个参数设置为第一个参数,依此类推

如何从项目调用

这不是“如何从C#调用C ++函数”的重复 我知道如何为普通的PC应用程序做这个,我试过它的工作原理: 这称为P / Invoke 1. Create a C++ dll project, but you can’t add the C++ dll project as a reference to the C# project. Copy the dll from C++, and paste the dll to the C# exe folder 2. in C# use [DllImport…] in C++ use extern “C” __declspec(dllexport) … 但是当我在WindowsPhone上执行此操作时,失败了。 Windows […]

如何从本机C(++)DLL调用.NET(C#)代码?

我有一个C#app.exe和一个C#my.dll。 my.dll .NET项目链接到本机C ++ DLL(mynat.dll)(外部C DLL接口),从C#调用C ++ DLL工作没有问题。 (通过使用[DllImport(“mynat.dll”, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]属性。) 我现在需要添加的是C#dll提供一些C ++代码可以调用的回调函数。 理想情况下,mynat.dll C ++代码将使用LoadLibrary(“my.dll”)加载C#dll,然后使用GetProcAddress解析它随后可以调用的回调函数。 (注意,在C ++代码调用LoadLibrary时,my.dll C#dll已经加载到进程中 – 这个调用只是为了获取dll的句柄。) 但是,我不知道从.NET DLL导出“extern C DLL接口”的正确方法是什么 我需要做些什么来实现这一目标?