我是个java程序员,公司最近需要与硬件厂商绑定合作,要调用硬件ID的信息。
我是个C#新手,写了一个查看硬件信息的c#工具类,打包成dll文件供java调用。
loadLibrary找到了文件,但是无法调用方法。
我找了一个dll export view软件查看,发现里面根本没有方法函数,一片空白。
回到vs中编了个测试类测试,没有问题。但是不知道为什么就是不能正常输出dll。
在网上找了很长时间,有人说用def文件,有人说用csc打包。
我查找了关于def的相关资料,说是定义dll文件方法对象的类似说明文件的东西,因为着急,没有仔细研究和尝试。
试了csc打包,跟用vs生成是同样的效果,一片空白。希望有高手能指点我一条明路,如果def文件可行,简单指点一下,如果不可行,怎么办才行。
下面是我的c#源代码
using System;
using System.Management;namespace hardInfo
{
    public class HardInfo
    {
        public string GetHostName()
        {
            return System.Net.Dns.GetHostName();
        }        public string GetMainHardDiskId(String hardName)
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(hardName);
            String strHardDiskID = null;
            foreach (ManagementObject mo in searcher.Get())
            {
                foreach (PropertyData PC in mo.Properties)
                {
                    strHardDiskID = strHardDiskID + PC.Name + ":" + PC.Value + "\n";
                }
            }
            Console.Write(strHardDiskID);
            return strHardDiskID;
        }
    }
}

解决方案 »

  1.   

    C#   的  dll  不是  windows 
    建议用   J# 调用然后给 java   用
      

  2.   

    你是说c#的dll不适合windows用?
    不明白
    回头我可以试试C++或者Delphi写,然后打包dll
      

  3.   

    Java怎么调用的C#? 一个运行在CLR上一个运行在JVM上通过MQ或者WebService可以进行数据交互。
      

  4.   

    很困惑....net编译给java调用??可以的吗?
      

  5.   

    Java不能读取硬件ID信息,不可能吧为什么不用Java写一个函数供Java调用呢如果跨平台可以研究一下Mono
      

  6.   

    c# dll 不同于win32的dll是找到函数的。
    com mq webservice socket 剪切板 文件
    等有很多方法。
      

  7.   

    你的意思是说C#的dll在java的jni中是无法loadlibrary的吗?
    数据交互我知道,但是采用webservice似乎太绕了,只是一个简单的小功能。
    希望知道的大大踊跃发言。
      

  8.   

    查到了一些头绪,C#的dll果然跟c/c++的dll有不同,
    未经处理无法被JAVA调用,或者根本无法被JAVA调用。
    目前未知,有明白的说一下?
      

  9.   

    果然有很多人研究过这个问题,结论是基本不可能实现JAVA调用C#的DLL,
    需要超多波折,果断宣布放弃,走C++路线去。