Tag: dll

加载DLL库

是否可以使用C加载DLL并使用其function? 我是C的新手,我正试图在互联网上搜索一些好的参考资料; 但我找不到任何东西。 任何帮助,将不胜感激! 我在Windows 7,64位的Code :: Blocks中使用GNU GCC。

将linux的.so文件转换为Windows的.dll文件

我有一些C代码(有各种头文件和一个make文件)在Linux(Ubuntu)中编译为.so文件和一个python程序,它使用Ctypes调用这个共享对象的函数。 现在,我想在Windows上使用这个程序。 在Windows中, Ctypes需要一个.dll文件而不是linux中的.so文件。 那么,有没有办法可以将linux的.so文件转换为.dll文件, Ctypes在Windows中与Ctypes一起使用?

传递包含C和C#之间结构数组的结构(DLL和P调用)

我有一个复杂的结构C dll我真的是C#的新手: typedef struct { int a; int b; } simple_struct; typedef struct { int d; int e; simple_struct f[20]; short g; simple_struct h[20]; short i; } complex_struct; 问题是我无法使用这种结构连接我的C#应用​​程序! 在DLL中有一个函数Ge​​tData(complex_struct * myStruct),我应该从C#中调用它,所以我创建了: [StructLayout(LayoutKind.Sequential, Pack = 1)] unsafe struct simple_struct { public int a; public int b; } ; [StructLayout(LayoutKind.Sequential, Pack = 1)] unsafe struct complex_struct […]

有没有为Delphi(Win32)DLL创建C头文件的工具?

到目前为止,我只看到了为给定的C头文件创建Delphi代码的工具和一些信息。 但是,在’Delphi first’的情况下,有一个Delphi接口声明和一个生成的DLL,没有C头。 是否有工具可以提取必要的信息并为DLL构建C头文件? 这样的工具可以在跨语言/跨平台项目中提供帮助并节省时间。 例如,使用C头文件,使用jnaerator自动创建Java JNA绑定代码会更容易。 工具链看起来像这样: Delphi源码 – >创建C头 – >转换为Java绑定 – >使用Java中的Delphi DLL

从托管应用程序调用的本机DLL的堆栈溢出

当我调用本机DLL时,我从我的应用程序中得到了臭名昭着的0xC00000FD (堆栈溢出)exception。 这是通过Windows CE 5(SH4处理器)上的托管C#应用程序完成的。 使用相同的托管应用程序为Windows XP编译相同的DLL,一切正常(没有溢出)。 DLL中的例程正在进行一些非常复杂的递归,这最终导致溢出,但同样,它在PC上运行良好。 看起来我可能只需要在构建DLL时调整堆栈大小? 我相信使用Visual C编译器时,CE和XP的默认堆栈大小都是1MB(我使用Visual Studio 2005,如果这很重要)。 如果它们都默认为相同的大小,我不确定为什么会溢出而另一个不会。 我尝试使用/ F编译器标志和/ STACK链接器标志调整堆栈大小,但似乎没有做任何事情。 我也不完全清楚我可以在DLL中指定堆栈大小,而是可执行文件必须设置它。 但是,如果是这样的话,我如何调整托管进程在调用本机DLL时使用的堆栈大小?

JNI – C ++ / Java中的监听器 – 可以用c ++实例化Java对象并将它们用作参数

以下是否适用于JNI? public NativeClass { static { System.loadLibrary(“dll”); } public static native void addListener(Listener listener); } public interface Listener { public void eventOccurred(Info info); } public Info { private final String s1; private final String s2; public Info(String s1, String s2); // … getters for use in Java } 是否有可能 在dll上注册一个Listener对象(据我所知,应该没问题) 在c / c ++代码中实例化一个Info对象,并将其用作调用Listener.eventOccured(Info…)的参数? 或者什么是实现从DLL获取一些信息的侦听器的好方法? […]

从Delphi中的C DLL获取字符串返回值

我有一个用C编写的遗留DLL,它包含一个返回字符串的函数,我需要从Delphi访问这个函数。 我对DLL的唯一信息是用于访问函数的VB声明: 公共声明函数DecryptStr Lib“strlib”(Str As String)As String 我试过以下没有成功: 宣言: function DecryptStr(s: PChar): PChar; cdecl; external ‘strlib.dll’; 用法: var p1, p2 : pchar; begin GetMem( p1, 255 ); StrPCopy( p2, ‘some string to decrypt’ ); p1 := DecryptStr( p2 ); end; 这始终使DLL与访问冲突崩溃。 我很茫然。 有什么建议 ?

ELF的代理共享库(sharedlib,shlib,so)?

在Windows上,创建“代理DLL”或多或少是常见的,代替原始DLL并将调用转发给它(在需要时执行任何其他操作之后)。 你可以在这里和这里阅读它。 然而,Linux下的shlib munging文化是完全不同的。 首先,LD_PRELOAD是Linux下ld.so的内置function,它只是将单独的shlib注入进程并使用它定义为覆盖的任何符号。 而这种“注入”技术似乎定义了整个思维方向 – 这是一个典型的ELF黑客工具或这个问题 ,绅士似乎与我有相同的用法,但首先要问他如何修补现有的二进制文件。 不用了,谢谢。 我不想注入或修改那些也不是我的东西。 我想做的就是创建一个独立的代理shlib,它将调用原始代理。 理想情况下,会有一个工具可以使用原始.so创建一个C源代码,它只会重定向到原始的函数,同时让我轻松覆盖我想要的任何东西。 那么,这样的工具在哪里? ;-) 谢谢。

调试Visual Studio 2010 DLL项目

我正在尝试从Visual Studio 2010调试C / C ++本机DLL项目。我正在尝试按照这些说明操作: http : //msdn.microsoft.com/en-us/library/c91k1xcf(v = VS.100 )的.aspx 我想使用内置的调试器,并能够像常规的.exe项目一样执行代码,检查结构等。 上面的页面上的说明描述了配置属性下的调试类别,我没看到。 http://img707.imageshack.us/img707/4402/lalasz.png 只需按F5进行调试就会出现以下错误: 无法启动程序’C:\ Users ……. Test.dll’ 我已经多次将调试器用于常规.exe项目,并且在这台计算机上运行正常。 我不确定我现在是否只是错过了一些非常明显的东西。 编辑:由于我从一开始就没有说清楚,我希望Visual Studio将我的DLL加载到存根过程中,然后让我从那里调试源代码,就像OllyDbg一样。 我的DLL不是包含要导出和调用的一堆函数的类型。 相反,它在DllMain中执行切换/大小写,并且在DLL_PROCESS_ATTACH上将生成一个新线程。 因此,我需要Visual Studio才能将我的DLL加载到存根可执行文件中,并允许我设置断点等。

打开DOS窗口并从DLL中调出调试消息

我目前正在从labview调用DLL,但我需要能够实时调试它(因为它访问时间敏感的硬件)。 我想printf()我的错误断言消息但我不确定如何从DLL中打开DOS窗口以转储错误信息。 有没有人这样做过? 我知道我可以用文件做到这一点,我可能不得不这样做。 printf就是这样一个方便快捷的方式来做到这一点虽然:)。