Alguem poderia me ajudar a solucionar este erro!
JNI error LNK2001
Comando para compilar o programa C
"C:\Arquivos de programas\Microsoft Visual Studio\VC98\Bin\CL.EXE" -I"C:\Arquivos de programas\Microsoft Visual Studio\VC98\Include" -I"C:\Arquivos de programas\Microsoft Visual Studio\VC98\Include\win32" -LD HelloWorldImp.cpp -FeHelloworld.dll
Codigo do programa C
#include "Pkg_HelloWorld.h"
#include <windows.h>
#include <winsvc.h>
#include <iostream.h>
JNIEXPORT jint JNICALL Java_Pkg_HelloWorld_start(JNIEnv *, jobject)
{
SC_HANDLE Messenger,scm;
scm=OpenSCManager(0,0,SC_MANAGER_CREATE_SERVICE);
if(!scm)
{
return 1;
}
Messenger=OpenService(scm,"Messenger",SERVICE_ALL_ACCESS); //SERVICE_ALL_ACCESS
if(!Messenger)
{
CloseServiceHandle(scm);
return 1;
}
StartService(Messenger,0,NULL);
CloseServiceHandle(Messenger);
CloseServiceHandle(scm);
return 0;
}
JNIEXPORT jint JNICALL Java_Pkg_HelloWorld_stop(JNIEnv *, jobject)
{
SC_HANDLE Messenger,scm;
scm=OpenSCManager(0,0,SC_MANAGER_CREATE_SERVICE);
if(!scm)
{
return 1;
}
Messenger=OpenService(scm,"Messenger",SERVICE_ALL_ACCESS);
if(!Messenger)
{
CloseServiceHandle(scm);
return 1;
}
SERVICE_STATUS m_SERVICE_STATUS;
ControlService(Messenger,SERVICE_CONTROL_STOP,&m_SERVICE_STATUS);
CloseServiceHandle(Messenger);
CloseServiceHandle(scm);
return 0;
}
int main(){
return 0;
}
Codigo do programa Java
package Pkg;
class HelloWorld
{
public native int start();
public native int stop();
public static void main(String[] a)
{
System.loadLibrary("HelloWorld");
HelloWorld helloWorld = new HelloWorld();
int i = helloWorld.start();
System.out.println(i);
}
}
Bem se alguem puder me ajudar eu agradeço o erro faz referencia as opcoes de manipulacao do servico:
HelloWorldImp.obj : error LNK2001: unresolved external symbol __imp__[b]StartService[/b]A@12
HelloWorldImp.obj : error LNK2001: unresolved external symbol __imp__[b]CloseServiceHandle[/b]
HelloWorldImp.obj : error LNK2001: unresolved external symbol __imp__[b]OpenService[/b]A@12
HelloWorldImp.obj : error LNK2001: unresolved external symbol __imp__[b]OpenSCManager[/b]A@12
HelloWorldImp.obj : error LNK2001: unresolved external symbol __imp__[b]ControlService[/b]@12
eeheheh eu sei eh o GUJ neh nada haver com C mais eh JNI entao vale neh???
O programa escrito para ser um executavel em C funciona normalmente. Descrito abaixo…
#include <iostream.h>
#include <windows.h>
#include <winsvc.h>
void ShowErr();
int main(int argc, char* argv[])
{
if(argc<2)
{
cout << "Usage:- StartStopService start|stop\r\n";
return 1;
}
SC_HANDLE Messenger,scm;
scm=OpenSCManager(0,0,SC_MANAGER_CREATE_SERVICE);
if(!scm)
{
ShowErr();
return 1;
}
Messenger=OpenService(scm,"Messenger",SERVICE_ALL_ACCESS); //SERVICE_ALL_ACCESS
if(!Messenger)
{
puts("aqui");
CloseServiceHandle(scm);
ShowErr();
return 1;
}
if(strcmp(argv[1],"start")==0)
{
cout << "starting...\r\n";
StartService(Messenger,0,NULL);
}
if(strcmp(argv[1],"stop")==0)
{
cout << "stopping...\r\n";
SERVICE_STATUS m_SERVICE_STATUS;
ControlService(Messenger,SERVICE_CONTROL_STOP,&m_SERVICE_STATUS);
}
CloseServiceHandle(Messenger);
CloseServiceHandle(scm);
return 0;
}
void ShowErr()
{
cout << "Error" << "\r\n";
}