首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用jni4net从.dll生成.java

使用jni4net从.dll生成.java
EN

Stack Overflow用户
提问于 2018-09-12 18:08:20
回答 1查看 528关注 0票数 2

我有我的c#类库。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Keyence.IV.Sdk;
using System.Reflection;
namespace JavaKameraSchnittstelle
{

public class KeyenceKameraSchnittstellen
{   
    private IVisionSensor[] sensor;
    private VisionSensorStore store;
    private List<byte[]> images;
    private DateTime lastUpdate;
    private bool[] areConnected;


    public KeyenceKameraSchnittstellen()
    {
    ...
    }

    //Listner
    public void ImageAcquired(object sender, ImageAcquiredEventArgs e)
    {
    ...
    }

    public void startTickTack()
    {
    ...
    }

    private void setImageAquiredListener()
    {
        ...
    }

    private void readIniDatei()
    {
       ...
    }

    private void init()
    {
        ...
    }

    private System.Net.IPAddress getLocalIp()
    {
        ...
    }

    public IVisionSensor[] getVisionSensoren()
    {
        ...
    }

    public List<byte[]> getImages()
    {
        ...
    }

    public bool[] getAreConnected()
    {
       ...
    }
}
}

它基于Keyence.IV.Sdk.dll。我通过Visual Studio将此.dll添加为程序集。编译器是友好的,没有显示错误。(在Windows应用程序中,代码运行良好。)

现在我想做一座桥

JNI4Net (proxygen.exe -...\dll ....)

现在我想要执行build.cmd,但是我得到了这个错误:

Z:\bwulf\GeneratedSchnittstelle>build.cmd
compile classes
JavaKameraSchnittstelle.j4n.jar
JavaKameraSchnittstelle.j4n.dll clr\javakameraschnittstelle\KeyenceKameraSchnittstellen.generated.cs(58,165): error CS0400: Der Typ- oder Namespacename
        'Keyence' konnte im globalen Namespace nicht gefunden werden. (Fehlt ein Assemblyverweis?) clr\javakameraschnittstelle\KeyenceKameraSchnittstellen.generated.cs(79,85): error CS0400: Der Typ- oder Namespacename
        'Keyence' konnte im globalen Namespace nicht gefunden werden. (Fehlt ein Assemblyverweis?) clr\javakameraschnittstelle\KeyenceKameraSchnittstellen.generated.cs(79,125): error CS0400: Der Typ- oder Namespacename
        'Keyence' konnte im globalen Namespace nicht gefunden werden. (Fehlt ein Assemblyverweis?) clr\javakameraschnittstelle\KeyenceKameraSchnittstellen.generated.cs(79,13): error CS0012: Der Typ
        'Keyence.IV.Sdk.IVisionSensor' ist in einer nicht referenzierten Assembly definiert. Fügen Sie einen Verweis auf        die Assembly 'Keyence.IV.Sdk, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null' hinzu. z:\bwulf\KameraSchnittstelle\JavaKameraSchnittstelle.dll: (Position des Symbols für den vorherigen Fehler)

我不熟悉c#。我在Assembly.LoadFile()...上找到了一些东西,但我真的不能用它做任何事情。

哪里是错误,以及为什么我会得到这个错误:

找不到

'Keyence‘命名空间。

感谢您的阅读。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-16 03:10:38

您应该添加build.cmd文件的内容。

假设您的build.cmd等同于this

Csc.exe /nologo /warn:0 /reference:....\lib\jni4net.n-0.8.9.0.dll /out:work/helloWorldFromCLR.exe /target:exe Program.cs

它看起来像是编译C#程序的一种方法。

error CS0400 says

标识符在全局命名空间中找不到类型或命名空间名称“

”(是否缺少程序集引用?)

实际上,您的build.cmd找不到另一个程序集-- Keyence.IV.Sdk.dll

您可以通过/reference:选项添加它,以便编译器Csc.exe可以找到该程序集。编辑build.cmd文件,并为您在Visual Studio项目引用中添加的其他程序集添加其他/reference:部分。

您可以查看完整的编译器选项here

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

https://stackoverflow.com/questions/52292659

复制
相关文章

相似问题

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