Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用一个简单的C++;来自java的VS6函数_Java_C++_Dll_Jna - Fatal编程技术网

调用一个简单的C++;来自java的VS6函数

调用一个简单的C++;来自java的VS6函数,java,c++,dll,jna,Java,C++,Dll,Jna,我在VisualStudio6中制作了一个简单的函数,这是代码 #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; } 我需要从jav

我在VisualStudio6中制作了一个简单的函数,这是代码

#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.UnsatifiedLinkError中出现异常:错误 查找函数“GetCompanyCode”:指定的过程可能会失败 找不到

位于com.sun.jna.Function.(Function.java:179) com.sun.jna.nativellibrary.getFunction(nativellibrary.java:347)位于 com.sun.jna.nativellibrary.getFunction(nativellibrary.java:327)位于 com.sun.jna.Library$Handler.invoke(Library.java:203)位于 com.sun.proxy.$Proxy0.GetCompanyCode(未知源)位于 javaapplication4.javaapplication4.main(javaapplication4.java:28) C:\Users\amir\AppData\Local\NetBeans\Cache\8.2\executor snippets\run.xml:53: Java返回:1生成失败(总时间:0秒)


<>我应该怎么办?

<代码>外“c”<代码>不是C,而是C++。它也不会使函数成为C函数,只会更改接口(ABI和命名约定)。虽然没有直接关系,但下一步您会遇到这个问题:因为您使用的是u stdcall,所以需要从
StdCallLibrary
扩展,而不是
Library