我使用第三方.dll库时遇到问题: 该库有一些类,我需要在我的Java应用程序中通过JNI在我编译的.dll中使用这些方法。 我试图宣布这样的事情:
#ifdef SERVER_EXPORTS
#define SERVER_API __declspec(dllexport)
#else
#define SERVER_API __declspec(dllimport)
#endif
namespace MYDLLNAMESPACE
{
class SERVER_API IServer
{
public:
int NFun(int func);
};
class SERVER_API ServerClass : public IServer {
public:
ServerClass();
int NFun(int func) {
return MYDLLNAMESPACE::ServerClass::NFun(func);
}
};
}
Ant然后在代码中使用它:
IServer *Myserv = new Server();
int a = Myserv->NFun(5007);
return a;
但它出现错误"错误LNK2019:未解析的外部符号" __ declspec(dllimport)public:int __thiscall MYDLLNAMESPACE :: IServer:"
我需要做类似的事情:
Iserver myServer = new Server();
int result = myServer.do_smth();
return result;
其中服务器是 MYDLL.dll - >命名空间MYDLLNAMESPACE - > class Server
有什么方法可以做到吗?
P.S。我没有第三方的.h文件的任何.lib .dll
修改 现在我有了Server.h文件:
namespace NS {
class __declspec(dllexport) ServerClass
{
public:
ServerClass() {
}
const char* GParam(const char* key);
const char* SParam(const char* key, const char* value);
};
}
我的Impl.cpp文件,我在那里尝试'实例化ServerClass并使用其方法' GParam'像这样:
ServerClass *serv = new ServerClass();
const char* str = serv->GParam("LastErrorTxt");
但它转到StackOverFlowException,好像是 serv-> GParam(" LastErrorTxt")正在执行而不是dll类实现