powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
8 сообщений из 8, страница 1 из 1
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
    #39681691
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, у меня такая ситуация:
У меня есть программа (далее JavaProject4), написанная на Java.
Также у меня есть библиотека (jninet), написанная на VC++.
Связь между JavaProject4 и jninet реализовано с помощью технологии JNI.
Часть кода JavaProject4, в котором реализуется вызов метода jninet, приведен ниже:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
private native void LoadSyncManagerConfiguration(String sFilePath, int host);

  public void InitExternModules(boolean loadSyncManager) throws Exception
  {
    String curdir = System.getProperty("user.dir");
    curdir += System.getProperty("file.separator");
    String FileName = curdir + "jninet.dll";

    try {
      System.load(FileName);
    }
    catch(UnsatisfiedLinkError le) {
      throw new Exception("File not found: "+le.getMessage());
    }

    if (loadSyncManager) {
      try {
        LoadSyncManagerConfiguration(curdir + ConfigDirFile, iHostType);
      }
      catch (UnsatisfiedLinkError le) {
        throw new Exception("Method not found: " + le.getMessage());
      }
      SyncManagerLoaded = true;
    }

    ExternModulesLoaded = true;
  }
...
Рейтинг: 0 / 0
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
    #39681692
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы в форуме по Java спрашиваете как дебажить VC++ dll?
...
Рейтинг: 0 / 0
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
    #39681694
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Продолжение...

В jninet метод LoadSyncManagerConfiguration реализован следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
#include "stdafx.h"
#include "jninet.h"

using namespace System;
using namespace System::Threading;
using namespace jninet;

#using "SyncManager.dll"
using namespace SyncManager;
using namespace SyncManager::EMail;
#using "ReplUtils.dll"
using namespace ReplUtils;
#using "DataTransferCore.dll"
using namespace DataTransferCore;

extern "C" {

JNIEXPORT void JNICALL Java_replicant_ConfigCtrl_LoadSyncManagerConfiguration
  (JNIEnv *env, jobject, jstring FilePath, jint ihost_type)
{ 
	const char *sFile = NULL;

	try {
		HostType ht;
		sFile = env->GetStringUTFChars(FilePath, NULL);
		switch (ihost_type)
		{
		case 1: ht = HostType::Center; break;
		case 2: ht = HostType::CenterFil; break;
		case 3: ht = HostType::Csm; break;
		case 4: ht = HostType::Filial; break;
		default: throw new Exception(S"LoadSyncManagerConfiguration: Invalid host type");
		}
		Config::Load(CJniNet::UTFCharsToString(sFile), ht);
		env->ReleaseStringUTFChars(FilePath, sFile);
		sFile = NULL;
	}
	catch (Exception *ex)
	{
		if (sFile != NULL)
			env->ReleaseStringUTFChars(FilePath, sFile);

		char buf[256];
		jclass excl = env->FindClass("java/lang/Exception");
		if (excl != NULL)
		{
			CJniNet::GetCharString(buf, ex->Message, 256);
			env->ThrowNew(excl, buf);
		}
	}
}
...
}



У меня возникает вопрос : как мне выполнить отладку кода на VC++ при отладки JAVA?
...
Рейтинг: 0 / 0
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
    #39681695
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

случайно нажал на опубликовал
...
Рейтинг: 0 / 0
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
    #39681696
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986,

я работаю в ОС Windows 7, среда разработки JAVA это Netbeans 8.2, среда разработки VC++ Visual Studio 2008
...
Рейтинг: 0 / 0
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
    #39681698
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично мне запрос " отладка jni dll " второй ссылкой выдаёт статью по отладке в комбинации "netbeans и visual c++ 2008".
...
Рейтинг: 0 / 0
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
    #39681701
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov, гляну
...
Рейтинг: 0 / 0
Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
    #39681725
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же, как любые другие DLL.

Запустить приложение (java) дождаться загрузки DLL, отладчиком MSVC подключиться к запущенному приложению, поставить брейкпоинты в DLL.

IMHO & AFAIK
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Отладка метода dll, написанной на VC++ и вызываемой из проекта JAVA по технологии JNI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]