一个C++文件读取另外一个C++生成的.dll文件报错

//要调用的.dll文件#include<iostream>#include<stdio.h>#include<windows.h>#include<tchar.h>us... //要调用的.dll文件
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <tchar.h>
using namespace std;

/*
int main(int argc,char* argv[])
{
FP fp; //通常是用宏FP来声明一个函数指针fp
fp=Invoke;
fp("123\n");
return 0;
}
*/

typedef void (*getData)(char* s);

void Invoke(getData callback)
{
callback("Hello World.");
}

//读取.dll的C++文件
#include "com_chnic_jni_SayHellotoCPP.h"
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <tchar.h>
using namespace std;

JNIEXPORT void JNICALL Java_com_chnic_jni_SayHellotoCPP_sayHello
(JNIEnv* env, jobject obj, jstring name)
{
const char* pname = env->GetStringUTFChars(name, NULL);
cout << "Hello, " << pname << endl;
}

{
// 声明一个Dll实例文件句柄
HINSTANCE hDll;

// 导入Person.dll动态链接库
hDll = LoadLibrary("Person.dll");

getData callback;
callback = (getData)GetProcAddress(hDll, "callback");

int value;
value = callback("Hello World.");
printf(value);

// 卸载DLL文件
FreeLibrary(hDll);
}

编译下面那个文件的时候报错:
1>e:\visual studio 2008\projects\helloend\helloend\com_chnic_jni_sayhellotocpp.cpp(16) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>生成日志保存在“file://e:\Visual Studio 2008\Projects\HelloEnd\HelloEnd\Debug\BuildLog.htm”
1>HelloEnd - 1 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
展开
 我来答
碧血玉叶花
推荐于2016-11-20 · TA获得超过4976个赞
知道大有可为答主
回答量:6154
采纳率:0%
帮助的人:1641万
展开全部

两种方法,一种是用到MFC的,就象楼上说的一样,建一个工程“MFC Wizard(dll)”,然后按提示走,再把你的CPP文件加到工程里就行了。另一种是不用到MFC,建一个“Win32 Dynamic~Link Library”工程,是一个单纯的Win32动态库,是一个空的工程,需要把你的CPP文件加入工程中,还要在你的CPP文件里加入动态库入口:

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
    }
    return TRUE;
}
还要在工程里加一个.def文件,定义你的动态库需要输出的函数。内容如:
; Exports for ShowThread.DLL
LIBRARY ShowThread.DLL
EXPORTS    
    ContinueThread @ 1
追问
不好意思,我是C++新手,刚学,看不懂,你还是写一个最简单的C++(B端)调用另外一个C++(C端)生成的.dll文件,就是把C端产生的数据回调给B端,求代码,大神,万分感谢!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式