首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雅各布·com.jacob.com.ComFailException:无法将名称映射到com.jacob.com.ComFailException:

雅各布·com.jacob.com.ComFailException:无法将名称映射到com.jacob.com.ComFailException:
EN

Stack Overflow用户
提问于 2014-11-14 20:08:16
回答 2查看 8K关注 0票数 1

我一直在尝试使用雅各布从Java中调用dll函数,但没有成功。我已经用regasm注册了dll,就像这里描述的那样- http://www.dreamincode.net/forums/topic/114094-using-dll-library-in-java-application-using-jacob/。我的代码:

代码语言:javascript
复制
String serverName = "...", fileName = "...";
Dispatch dispatch = new Dispatch("dllx32conn.dbconn");  
Dispatch.call(dispatch, "pass_para", serverName, fileName);

这不管用。它抛出com.jacob.com.ComFailException:无法将名称映射到dispid: pass_para

因此,我决定通过使用JetBrains dotPeek对dll函数进行反编译来分析它。这是我发现的

代码语言:javascript
复制
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace dllx32conn
{
  public class dbconn
  {
    public static string conn_str = "";
    public static string strFilePath = "";
    public static SqlConnection Conn = new SqlConnection();
    public static DataTable tbl;
    public static SqlDataAdapter dap;

    public static void pass_para(string servname, string csvpth)
    {
      dbconn.conn_str = "Data Source=" + servname + ";Initial Catalog=Billing;User Id=Scd;Password=Smart11Siri";
      dbconn.strFilePath = csvpth;
    }
  }
}

如果你能帮我找出这里没有发生的事情,我会非常感激。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-11-14 21:53:15

问题解决了--多亏了这篇文章,我只需要从DLL方法中删除'static‘函数声明-- http://jumbloid.blogspot.com/2009/12/making-net-dll-com-visible.html

代码语言:javascript
复制
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace dllx32conn
{
  public class dbconn
  {
    public static string conn_str = "";
    public static string strFilePath = "";
    public static SqlConnection Conn = new SqlConnection();
    public static DataTable tbl;
    public static SqlDataAdapter dap;

    public void pass_para(string servname, string csvpth)
    {
      dbconn.conn_str = "Data Source=" + servname + ";Initial Catalog=xxx;User Id=xxx;Password=xxx";
      dbconn.strFilePath = csvpth;
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2015-04-09 03:32:48

所以我得到了这个错误,最终我的问题是我在class-path上有两个类的实例。我解压了依赖jar的类,以及路径上的jar本身。我摆脱了罐子,瞧,一切都开始漂亮地工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26929686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档