Tag: dllimport

从C ++ / CLI调用C#dll函数

我有一个C# dll。 代码如下: public class Calculate { public static int GetResult(int arg1, int arg2) { return arg1 + arg2; } public static string GetResult(string arg1, string arg2) { return arg1 + ” ” + arg2; } public static float GetResult(float arg1, float arg2) { return arg1 + arg2; } public Calculate() { } } 现在,我打算用这种方式从C++调用这个dll。 […]

将托管代码中的多维数组传递给非托管代码

我想做以下事情: 在c#代码中创建三个像素数组,如下所示: var myArray = new short[x,y,z]; UnanagedFunction(myArray); 将它传递给非托管代码(c ++),如下所示: void UnmanagedFunction(short*** myArray) { short first = myArray[0][0][0]; } 更新当我尝试以下代码时,我遇到运行时错误: 尝试读取或写入受保护的内存。 谢谢!!!

为什么.NET没有找到OpenSSL.NET DLL?

编辑 (整个问题,它太不清楚了) 我想使用OpenSSL.NET OpenSSL.NET安装说明页面: INSTALL 确保在应用程序的当前工作目录或PATH中有libeay32.dll和ssleay32.dll。 DONE 在.NET项目中,添加对ManagedOpenSsl.dll程序集的引用。 DONE 我已将libeay32.dll和ssleay32.dll放在我的bin/Debug和bin/Release目录中。 我也把它们放在system32 。 这是我的完整代码: using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { try { OpenSSL.Crypto.RSA rsa = new OpenSSL.Crypto.RSA(); } catch (Exception e) { Console.WriteLine(e.InnerException.Message); } Console.Read(); } } } 我收到以下错误: 无法加载DLL’libeay32’http://sofzh.miximages.com/c%23/Error.gif (无法加载DLL’libeay32’) 这是Process Monitor日志(根据要求): alt text http://sofzh.miximages.com/c%23/ProcMon.gif 我究竟做错了什么? 为什么找不到DLL?

需要激活一个窗口

我有这种情况。 我有一个应用程序的窗口句柄。 我需要激活它。 我尝试了所有这些function,但总是没有工作。(大多数时候,它不能在第一次工作,我将不得不手动点击它来激活它。第二次尝试以后它工作正常)我之所以如此我这样做是因为我有代码写在Form.Activate事件的forms,我需要执行。 应用程序是单实例应用程序。 创建新实例时,它首先检查是否存在任何其他进程,如果找到,则将旧进程的句柄传递给这些函数,以便用户可以处理旧表单。 从不同的C应用程序调用应用程序。 [DllImport(“user32.dll”)] public static extern int ShowWindow(IntPtr hWnd,int nCmdShow); [DllImport(“user32.dll”)] public static extern int SetForegroundWindow(IntPtr hWnd); [DllImport(“user32”)] public static extern bool PostMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam);

如何在C#应用程序中使用DllExport C ++类

我创建了一个包含类“myCppClass”的C ++ Dll项目,并尝试使用以下代码将其导出:如下所述: http : //msdn.microsoft.com/en-us/library/a90k134d( v = vs。 80)的.aspx class __declspec(dllexport) CExampleExport : //public CObject { … class definition … }; 我省略了“public CObject”,因为它需要afx.h并暗示它是一个MFC Dll。 我不确定这是否是好事但它与DLL项目默认设置不同。 从上面链接的文档中我可以相信所有“公共函数和成员变量”都可以导入。 我如何在C#中实现这一目标? 可以简单地实例化该类吗? 编辑:我刚刚意识到post的标题可能会产生误导。 重点应该是来自C#的DllImporting,并确保我在C ++中正确地遵循了文档

阅读注册表项

我有一个Web应用程序,它从bin文件夹导入DLL。 const string dllpath = “Utility.dll”; [DllImport(dllpath)] 现在我想要做的是首先从不在当前项目中但在某个不同位置的文件夹中导入DLL。 该文件夹的路径存储在注册表项中。 我该怎么做? 编辑 : 为什么我不能解决这个问题? public partial class Reports1 : System.Web.UI.Page { RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@”Software\xyz”); string pathName = (string)registryKey.GetValue(“BinDir”); const string dllpath = pathName; [DllImport(dllpath)] public static extern bool GetErrorString(uint lookupCode, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder buf, uint bufSize); protected void Page_Load(object sender, EventArgs e) { string pathName = […]

如何在C#中使用?

我发现了很多关于它的问题,但没有人解释我如何使用它。 我有这个: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Windows.Forms; using Microsoft.FSharp.Linq.RuntimeHelpers; using System.Diagnostics; using System.Runtime.InteropServices; using System.IO; public class WindowHandling { public void ActivateTargetApplication(string processName, List barcodesList) { [DllImport(“User32.dll”)] public static extern int SetForegroundWindow(IntPtr point); Process p = Process.Start(“notepad++.exe”); p.WaitForInputIdle(); IntPtr h = p.MainWindowHandle; SetForegroundWindow(h); SendKeys.SendWait(“k”); IntPtr processFoundWindow = p.MainWindowHandle; } } […]

使用.NET的pHash

我试图从.NET使用pHash 我尝试的第一件事是注册(regsvr32) phash.dll并在这里询问其次,我试图使用DllImport导入,如下所示。 [DllImport(@”.\Com\pHash.dll”)] public static extern int ph_dct_imagehash( [MarshalAs(UnmanagedType.LPStr)] string file, UInt64 hash); 但是当我尝试在运行时访问上述方法时,会显示以下错误消息。 Unable to find an entry point named ‘ph_dct_imagehash’ in DLL ‘.\Com\pHash.dll’. “切入点”是什么意思,为什么我会收到错误? 谢谢。 仅供参考 – 这是完整的源代码 using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows; namespace DetectSimilarImages { public partial class MainWindow : Window { [DllImport(@”.\Com\pHash.dll”)] public static extern int ph_dct_imagehash( […]

如何使用DLLImport将字符串从C#传递到C ++(以及从C ++传递到C#)?

我一直在尝试向C ++发送一个字符串到/从C ++发送一个字符串很长一段时间但是没有设法让它工作呢…… 所以我的问题很简单: 有没有人知道从C#到C ++以及从C ++到C#发送字符串的方法? (一些示例代码会有所帮助)

卸载使用DllImport加载的DLL

如何卸载在C#中使用DllImport加载的DLL?