// mycalldll.cpp : 定义 DLL 的初始化例程。
//
#include "stdafx.h"
#include "mycalldll.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//
// 注意!
//
// 如果此 DLL 动态链接到 MFC
// DLL,从此 DLL 导出并
// 调入 MFC 的任何函数在函数的最前面
// 都必须添加 AFX_MANAGE_STATE 宏。
//
// 例如:
//
// extern "C" BOOL PASCAL EXPORT ExportedFunction()
// {
// AFX_MANAGE_STATE(AfxGetStaticModuleState());
// // 此处为普通函数体
// }
//
// 此宏先于任何 MFC 调用
// 出现在每个函数中十分重要。这意味着
// 它必须作为函数中的第一个语句
// 出现,甚至先于所有对象变量声明,
// 这是因为它们的构造函数可能生成 MFC
// DLL 调用。
//
// 有关其他详细信息,
// 请参阅 MFC 技术说明 33 和 58。
//
// CmycalldllApp
BEGIN_MESSAGE_MAP(CmycalldllApp, CWinApp)
END_MESSAGE_MAP()
// CmycalldllApp 构造
CmycalldllApp::CmycalldllApp()
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 CmycalldllApp 对象
CmycalldllApp theApp;
// CmycalldllApp 初始化
BOOL CmycalldllApp::InitInstance()
{
CWinApp::InitInstance();
return TRUE;
}
#include "javacall.h"
JNIEXPORT jint JNICALL Java_javacall_shanfei (JNIEnv *, jclass, jint p)
{
int j = p*p;
return j;
}
mycalldll.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class javacall */
#ifndef _Included_javacall//java的head
#define _Included_javacall
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: javacall
* Method: shanfei
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_javacall_shanfei
(JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif
//java
/**
* @author zhangxl
* 创建日期 2006-2-8
*/
public class javacall
{
static
{
System.loadLibrary("Maxdll");
}
public native static String multiply(int i, int j, String st);
public static void main(String[] args)
{
javacall jc = new javacall();
int i = 4;
int ii = 5;
String stj;
stj = jc.multiply(i, ii, "兰test");
System.out.println(i+" the shanfei result is :"+stj);
}
//
#include "stdafx.h"
#include "mycalldll.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//
// 注意!
//
// 如果此 DLL 动态链接到 MFC
// DLL,从此 DLL 导出并
// 调入 MFC 的任何函数在函数的最前面
// 都必须添加 AFX_MANAGE_STATE 宏。
//
// 例如:
//
// extern "C" BOOL PASCAL EXPORT ExportedFunction()
// {
// AFX_MANAGE_STATE(AfxGetStaticModuleState());
// // 此处为普通函数体
// }
//
// 此宏先于任何 MFC 调用
// 出现在每个函数中十分重要。这意味着
// 它必须作为函数中的第一个语句
// 出现,甚至先于所有对象变量声明,
// 这是因为它们的构造函数可能生成 MFC
// DLL 调用。
//
// 有关其他详细信息,
// 请参阅 MFC 技术说明 33 和 58。
//
// CmycalldllApp
BEGIN_MESSAGE_MAP(CmycalldllApp, CWinApp)
END_MESSAGE_MAP()
// CmycalldllApp 构造
CmycalldllApp::CmycalldllApp()
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 CmycalldllApp 对象
CmycalldllApp theApp;
// CmycalldllApp 初始化
BOOL CmycalldllApp::InitInstance()
{
CWinApp::InitInstance();
return TRUE;
}
#include "javacall.h"
JNIEXPORT jint JNICALL Java_javacall_shanfei (JNIEnv *, jclass, jint p)
{
int j = p*p;
return j;
}
mycalldll.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class javacall */
#ifndef _Included_javacall//java的head
#define _Included_javacall
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: javacall
* Method: shanfei
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_javacall_shanfei
(JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif
//java
/**
* @author zhangxl
* 创建日期 2006-2-8
*/
public class javacall
{
static
{
System.loadLibrary("Maxdll");
}
public native static String multiply(int i, int j, String st);
public static void main(String[] args)
{
javacall jc = new javacall();
int i = 4;
int ii = 5;
String stj;
stj = jc.multiply(i, ii, "兰test");
System.out.println(i+" the shanfei result is :"+stj);
}