从java

时间:2017-04-24 08:35:40

标签: java c++ dll jna

我在Visual Studio 6中创建了一个简单的函数,这是代码

#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)


{
    return TRUE;
}

extern "C" __declspec(dllexport) char __stdcall GetCompanyCode()
{
    return 1;
}

我需要从java调用函数GetCompanyCode,所以我使用了JNA 首先我在java中创建接口

package javaapplication4;
import com.sun.jna.Library;
/**
 *
 * @author amir
 */
public interface CompanyCode extends Library
{
    public  byte GetCompanyCode();
}

然后加载dll

import java.io.FileNotFoundException;
import java.io.IOException;
import com.sun.jna.Native;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;

/**
 *
 * @author amir
 */
public class JavaApplication4 
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws  IOException, FileNotFoundException, NoSuchAlgorithmException 
    {
        System.setProperty("jna.library.path", "C:/");
        CompanyCode Company= (CompanyCode)Native.loadLibrary("CompanyCode", CompanyCode.class);
        byte x=Company.GetCompanyCode();
        System.out.println(x);
    }
}

我收到了错误

  

线程中的异常" main" java.lang.UnsatisfiedLinkError:错误   查找功能' GetCompanyCode':指定的程序可以   找不到。

     

at com.sun.jna.Function。(Function.java:179)at   com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:347)at   com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:327)at   com.sun.jna.Library $ Handler.invoke(Library.java:203)at   com.sun.proxy。$ Proxy0.GetCompanyCode(未知来源)at   javaapplication4.JavaApplication4.main(JavaApplication4.java:28)   C:\ Users \用户埃米尔\应用程序数据\本地\的NetBeans \缓存\ 8.2 \执行人-片段\ run.xml:53:   Java返回:1 BUILD FAILED(总时间:0秒)

我该怎么办?

0 个答案:

没有答案