标签: dll

尝试在C#中导入本机DLL时"无法找到入口点"异常

我想在我的C#.net应用程序中使用本机Dll,如下所示:

public const int WFSDDESCRIPTION_LEN = 256;
public const int WFSDSYSSTATUS_LEN = 256;

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Auto)]
public struct LPWFSVERSION
{
   [MarshalAs(UnmanagedType.U4, SizeConst = 4)]
   int WVersion;
   [MarshalAs(UnmanagedType.U4, SizeConst = 4)]
   int WLowVersion;
   [MarshalAs(UnmanagedType.U4, SizeConst = 4)]
   uint WHighVerion;
   [MarshalAs(UnmanagedType.ByValTStr, SizeConst = WFSDDESCRIPTION_LEN + 1)]
   public string szDescription;
   [MarshalAs(UnmanagedType.ByValTStr, SizeConst = WFSDSYSSTATUS_LEN + 1)]
   public string szSystemStatus;
 }        
[DllImport("MSXFS.DLL", EntryPoint = "WFSStartUP", CharSet = CharSet.Auto, ExactSpelling = false)]
public static extern int WFSStartUP([MarshalAs(UnmanagedType.U4)]int dwVersionsRequired, ref LPWFSVERSION ver); …
Run Code Online (Sandbox Code Playgroud)

.net c# c++ dll

0
推荐指数
1
解决办法
758
查看次数

当从另一个项目重新呈现时,并非所有库的refrenced DLL都被本地复制

我正在尝试使用LEADTOOLS成像库,他们有一大堆需要引用的dll.设置我们的设计方式我们有一个核心库,我们所有的项目都是基于的,LEADTOOLS需要的所有DLL都加载到我们的基础库中,并且它们被复制到本地的构建路径,但是当我们使用它们时我们的子项目只在本地复制了一些DLL(LeadTools.Codecs.dll和LeadTools.dll是特定的).

两个dll之间的设置没有区别,45个没有.我需要做些什么才能让那些编解码器dll过来在本地复制?

参考清单的上半部分

在此输入图像描述

参考清单和第二个项目的底部

在此输入图像描述

核心输出目录

在此输入图像描述

第二个项目的输出目录

在此输入图像描述

这是csproj文件中的ItemGroup部分.

  <ItemGroup>
    <Reference Include="Leadtools, Version=16.5.0.0, Culture=neutral, PublicKeyToken=9cf889f53ea9b907, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\LEAD Technologies\LEADTOOLS Imaging 16.5\Redist\DotNet\x64\Leadtools.dll</HintPath>
    </Reference>
    <Reference Include="Leadtools.Codecs, Version=16.5.0.0, Culture=neutral, PublicKeyToken=9cf889f53ea9b907, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\LEAD Technologies\LEADTOOLS Imaging 16.5\Redist\DotNet\x64\Leadtools.Codecs.dll</HintPath>
    </Reference>
    <Reference Include="Leadtools.Codecs.Abc">
      <HintPath>C:\Program Files (x86)\LEAD Technologies\LEADTOOLS Imaging 16.5\Redist\DotNet\x64\Leadtools.Codecs.Abc.dll</HintPath>
    </Reference>
    <Reference Include="Leadtools.Codecs.Ani">
      <HintPath>C:\Program Files (x86)\LEAD Technologies\LEADTOOLS Imaging 16.5\Redist\DotNet\x64\Leadtools.Codecs.Ani.dll</HintPath>
    </Reference>
    <Reference Include="Leadtools.Codecs.Bmp">
      <HintPath>C:\Program Files (x86)\LEAD Technologies\LEADTOOLS Imaging 16.5\Redist\DotNet\x64\Leadtools.Codecs.Bmp.dll</HintPath>
    </Reference>
    <Reference Include="Leadtools.Codecs.Cal">
      <HintPath>C:\Program Files (x86)\LEAD Technologies\LEADTOOLS Imaging 16.5\Redist\DotNet\x64\Leadtools.Codecs.Cal.dll</HintPath>
    </Reference>
    <Reference Include="Leadtools.Codecs.Clp">
      <HintPath>C:\Program Files (x86)\LEAD Technologies\LEADTOOLS Imaging 16.5\Redist\DotNet\x64\Leadtools.Codecs.Clp.dll</HintPath> …
Run Code Online (Sandbox Code Playgroud)

.net c# dll projects-and-solutions visual-studio-2010

0
推荐指数
1
解决办法
1967
查看次数

我的vb.net代码在部署时无法调用我的VB6 DLL

我有一些代码创建了对vb6 dll的引用,并使用该引用来调用该对象.我遇到了问题,因为在Debug和我的机器上它运行良好.但是,当我将它部署到服务器,这是一个Windows 2008 64服务器,它不起作用.

我收到此错误:"由于以下错误,检索具有CLSID {C259F578-EC04-4C0F-A13B-AA440F13CB73}的组件的COM类工厂失败:80040154未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))."

这是我的代码.

    ClasstoInstantiate = ExportObject
    If UCase(pRow("TypeVB6").ToString()) = "TRUE" Then
        classType = Type.GetTypeFromProgID(ClasstoInstantiate, True)
    Else
        classType = Type.GetType(ClasstoInstantiate, True)
    End If

    Dim o As Object = Activator.CreateInstance(classType)
Run Code Online (Sandbox Code Playgroud)

.net vb6 dll

0
推荐指数
1
解决办法
1283
查看次数

如何在C#中使用为VB.Net编写的DLL

我有问题要问.

我有一个用于在USB上读写数据的dll文件.要在VB.Net中使用dll,需要集成.vb文件,该文件与该dll文件的接口使用其功能,属性等.

我需要的是在C#项目中使用这个DLL.这可能吗?如果是的话,我该如何实现呢?

表格中的代码类:

Public Class frmUSB
    ' vendor and product IDs
    Private Const VendorID As Integer = &H1234    'Replace with your device's
    Private Const ProductID As Integer = &H1234      'product and vendor IDs

    ' read and write buffers
    Private Const BufferInSize As Integer = 1 'Size of the data buffer coming IN to the PC
    Private Const BufferOutSize As Integer = 1    'Size of the data buffer going OUT from the PC
    Dim BufferIn(BufferInSize) As Byte          'Received data will …
Run Code Online (Sandbox Code Playgroud)

c# vb.net dll

0
推荐指数
1
解决办法
7555
查看次数

将C++代码导出为DLL并使用C#导入?

我有一个用C++编写的程序,其主函数调用了许多其他C++类/函数.

我是C++的新手(曾经是​​python程序员),所以我想知道 - 为了能够将它导出为可从C#程序导入的DLL,我需要遵循哪些步骤?有什么建议?

c# c++ windows dll

0
推荐指数
1
解决办法
335
查看次数

如何在C++中的同一个dll中获取dll位置路径?

假设我有一个名为MyDll.dll的dll

  • 它位于d:\ MyWorks\MyDll.dll [它是directshow dll]

  • 我想从MyDll代码中获取其位置的路径.

我使用了boost: FileSystem

string path = "";
boost::filesystem::path full_path( boost::filesystem::current_path() );
path =  full_path.string();
Run Code Online (Sandbox Code Playgroud)

但这给了我它的执行路径,即C:\ Windows\system32,而不是它的位置路径,即d:\ MyWorks\MyDll.dll.

如何在同一个dll中获取dll的位置?

更新:通过获取模块:

TCHAR path[2048];
  GetModuleFileName( NULL, path, 2048 );
  ostringstream file;

  file << path ;

  string const pathString =file.str();

  cout << "Path: " << pathString << endl;
Run Code Online (Sandbox Code Playgroud)

给我一个十六进制的字符串:0049EA95 ....

c++ windows dll boost visual-c++

0
推荐指数
3
解决办法
1万
查看次数

在此范围内未声明C++和DLL

在上一个问题之后,我发布并收到了一个很好的答案 -

从DLL动态加载函数

我还有其他问题.我必须在某个地方出错,但我很确定我正确地构建了.DLL,并且我确信从之前回答的问题它正确链接到.DLL.

我有以下内容:

http://pastie.org/3113984

我还使用了DependencyWalker来确保.DLL正在导出我试图调用的函数,并且它显示正在正确导出它.

PS:我在编译调用.dll的程序时收到错误,其中"导出的函数未在此范围内声明"错误.

感谢您的时间和帮助!

c++ dll

0
推荐指数
1
解决办法
707
查看次数

参考DLL - 在运行时允许以前的版本

对于一堆DLL,我将特定版本设置为False作为对C#控制台项目的引用.我知道这是一个编译时检查.

那么如何在运行时允许以前版本的DLL呢?

谢谢!

c# dll reference version

0
推荐指数
1
解决办法
2075
查看次数

将app.config文件放在具有多个项目的解决方案中的位置 - 错误

我有一个问题.我已经制定了解决方案,它是3层应用程序.所以我有3个项目是类库,一个是windows表单应用程序,它将使用我启动所有这些并将它们连接在一起.问题是我有数据层app.config文件.如果我把它放在那个dll中那么我就读不懂了.如果我把它放在主程序(Windows窗体应用程序)中,我仍然无法读取它.

所以我的问题是放置app.config文件的位置,以便我能正常阅读?我正在从DLL中读取它.它必须是这样的,因为它是3.tier应用程序,所有层都是自己的.所以一个是数据层,商务逻辑和表示层.

请帮忙.

编辑:

好的,我会传递一些代码:

所以我从数据层app.config文件中读取如下:

SqlConnection konekcija = new SqlConnection(ConfigurationManager.AppSettings["skripta"]);
Run Code Online (Sandbox Code Playgroud)

该类库项目中的app.config文件是:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
  <appSettings>
    <add key="skripta"
           value="Data Source=DENONTH-PC;Initial Catalog=rups;Integrated Security=True;Pooling=False" />
  </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我在该类librabry和Windows窗体项目中有app.config,但仍然没有正确引用它.

c# dll configurationmanager

0
推荐指数
1
解决办法
5585
查看次数

在C#中使用两个具有相同名称的静态类

我有一个DLL,我已经包含在我的C#项目中.我们称之为"one.dll"这个DLL包含一个名为"staticclass"的静态类

我有另一个DLL,我也包含在同一个项目中.我们称之为"two.dll"这个DLL还包含一个名为"staticclass"的静态类

现在当我在我的项目中同时包含两个DLL并尝试访问"staticclass"时,自然它会给出错误.有没有办法我可以更改类的名称或给它一些别名,所以让我们说"one.dll"中的"staticclass"将保持原样,我可以给"staticclassTwo"别名,这是"两个" .DLL"

请注意我无法访问"one.dll"和"two.dll"的源编解码器

c# dll static-classes

0
推荐指数
1
解决办法
1831
查看次数