![]() |
1
3
绝对相同的方式,当函数按名称导出时-没有任何区别。在这两种情况下,您都需要两件事-正确声明函数:
和lib文件,包括在链接器输入中。
当您包括
somename。def公司
文件到visual studio项目,它会自动添加
从另一方面来说,当调用函数时
这个
请注意,如果我们仅将generate lib file与def file分开,则
在具体情况下,在dll函数中实现为
|
![]() |
2
3
您可以使用lib。exe工具创建。来自的lib文件。您编写的DEF文件,实际上不必提供任何对象文件。 你会写一个。与要导出的序号匹配的def,但也提供名称,然后使用lib。exe创建。lib。 然后在代码中声明为: 外部“C”\u declspec(dllimport)ret\u type functname(arg\u type); 调用约定必须与函数实际使用的内容相匹配,但名称必须与创建的内容相匹配。即使该名称不遵循该调用类型的常规修饰,lib也会使用。 |
![]() |
3
0
这不是为了与
actual answer
.
大卫·赫弗南
在评论中提出了一个很好的观点,关于
1、x86版本DLL中的函数声明:
然后从另一个模块导入并调用它:
具有
|
![]() |
gr1d3r · 将字节数组从C++DLL返回到C# 6 年前 |
![]() |
jonimv · 如何在Delphi中使用C#创建的DLL 7 年前 |
![]() |
Gazza732 · C#:FindWindowEx未按预期工作 7 年前 |
![]() |
c00000fd · 如何静态链接到由序号导出的DLL函数? 7 年前 |
![]() |
Vladimir M. · C#OpenProcess返回错误1150 7 年前 |
![]() |
Gina Marano · c#封送null终止字符串数组 7 年前 |
![]() |
Milan · 在Java中加载远程库 7 年前 |
![]() |
Palmira · 使用COM dll中的非COM对象 8 年前 |