Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该把DLL的声明放在哪里+;如何在另一种语言中使用[C]_C_Dll - Fatal编程技术网

我应该把DLL的声明放在哪里+;如何在另一种语言中使用[C]

我应该把DLL的声明放在哪里+;如何在另一种语言中使用[C],c,dll,C,Dll,1) 假设我在c中创建了一个名为MyDLL的DLL。 我有两个文件,一个是MyDLL.c,第二个是MyDLL.h,然后我编译代码 并获取MyDLL.a和MyDLL.dll。 我知道如何在一个新的C项目中使用这个dll,我只需要包含MyDLL.h并给出 链接器我的MyDLL.a的路径 现在让我们假设我没有MyDLL.h,我需要调用LoadLibrary(),但是所有函数的原型以及MyDLL.h中的所有typdefs宏和结构,那么程序如何知道所有这些声明呢? 或者说我想在C#项目或JAVA项目中使用

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

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

您提到的大多数语言都定义了自己的函数,这是一种调用用其他语言编写的代码的机制。调用了FFI for Java和for C#-。

感谢您的快速回答,但我发现他们需要在代码中编写函数原型,但当我将dll发送给不知道函数原型的人时,您应该提供函数签名作为文档的一部分。或者,他们可以使用dumpbin或Dependency Walker等实用程序查看函数。什么是.lib文件和.def文件?