在VB NET中创建DLL。它必须是一个类库吗?

时间:2010-06-23 19:54:09

标签: .net vb.net dll dllimport

我有另一个程序(我没有源代码,已经编译过)调用DLL。我想把DLL交换出去,把它自己放在它的位置,运行我自己的模型(在DLL中),而不是软件附带的另一个。

我使用G95编译器在fortran中制作了DLL,这些编译器可以像下面一样动态地声明它们。我也研究过使用VB .NET创建DLL,但似乎唯一的选择是类库,它不会被调用并以与下面相同的方式声明。我确实有开发人员的函数声明代码,但这就是全部(见下文)

有没有办法使用VB NET创建不涉及类库的工作DLL,我可以将dll文件命名为“318dll.dll”,并且在里面有一个名为CalcLoss的函数,就是这样,而不是类,仅一个功能。我知道如何使用VB NET创建DLL的唯一方法是使用类库,然后你必须包含现有的项目,它在你的项目中神奇地出现。

以下是已经工作的fortran DLL的模板调用代码。如何使用VB NET制作这种DLL?

感谢。

Declare Sub CalcLoss Lib "318dll.dll" (TanTHT As Single, RanTHT As Single, EXTNSN As Boolean, ByVal Mode As String, Loss As Single, FSPLSS As Single)

5 个答案:

答案 0 :(得分:2)

我认为你想要创建一个Win32 DLL库,而不是.NET库。这就是为什么你没有看到你想要的选项。我不确定在VB.NET中是否有办法做到这一点。您可能需要切换到常规Visual Basic(而不是.NET)才能执行此操作。

答案 1 :(得分:0)

选项1:使用C ++ / ME在VB.NET DLL周围创建一个非托管包装器。

选项2:升级到FORTRAN的.NET版本。

答案 2 :(得分:0)

如果您想在.Net(VB.Net/C#)中编写代码并将其公开给非托管应用程序,您可以尝试我编写的这个工具。它允许您使用Attributes标记方法,然后重新组装程序集以允许导出。

此代码没有支持,但可以免费使用。 自行承担风险

......扩展......

在导出方法上使用ExportAttribute编译程序集后,可以运行重新编译器来反汇编和重新组合应用程序。这只是作为概念证明而写的。但它在VB6 / Winbatch和.Net程序集之间起作用。它还使用.Net DllImport / PInvoke函数进行了测试。

答案 3 :(得分:0)

Johnathan allen的选项#1是最好的。您可以使用来自c ++,VB6.0等的.NET库,MS上有文档。只需使用你的库。

但是,如果由于某种原因无法正常工作(警告, HACK ),如果你只用1x / sec或更短的时间调用它:

C ++ Win32 dll:将parm值写入临时文件。启动编译成EXE的VB.NET代码,该EXE读取临时文件并写入另一个结果。 Win32 DLL等待VB EXE,然后读取文件(真的用进程lib等待它,不要只查找输出文件,这是一个等待发生的痛苦世界)

答案 4 :(得分:0)

所以解决方案原来只是在fortran中编写DLL,因为我可以复制并粘贴一堆已经infortran的代码,而不是让VB dll调用fortran dll。现在它的所有一个dll,它的工作原理。感谢大家的投入。