0

1)假设我在c中创建了这个名为MyDLL的DLL。我有 2 个文件,1 个是 MyDLL.c,第二个是 MyDLL.h,然后我编译代码并获得 MyDLL.a 和 MyDLL.dll。我知道如何在新的 C 项目中使用这个 dll,我只包含我的 MyDLL.h 并为链接器提供 MyDLL.a 的路径现在可以说我没有 MyDLL.h,而不是我需要调用LoadLibrary()但是MyDLL.h 中的所有函数原型和所有 typdefs MACRO 和结构,那么程序如何知道所有这些声明?或者说我想在 C# 项目或 JAVA 项目中使用 DLL?我不能包含 MyDLL.h ..

2) 如果我在 dll 中有一个函数将指针作为参数(void *int *),如果我没有 C# 和 JAVA 或任何其他语言的指针,我该如何发送指针作为参数?或者如果函数获取参数结构?甚至是指向函数的指针?

4

1 回答 1

1

您提到的大多数语言都定义了自己的外部函数接口(FFI),这是一种调用用其他语言编写的代码的机制。Java 的 FFI 称为JNI,而 C# 的 FFI - P/Invoke

于 2013-01-31T13:42:42.473 回答