powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / error C3861: '...': identifier not found Вроде все включил, а не компилируется.
4 сообщений из 4, страница 1 из 1
error C3861: '...': identifier not found Вроде все включил, а не компилируется.
    #38997435
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
// aspr_api.h : Defines API functions.
//

#ifndef ASPR_API_H
#define ASPR_API_H
...
#ifdef __BORLANDC__
...
#else
 extern "C" BOOL  __stdcall GetRegistrationInformation( BYTE ModeId, char** Key, char** Name);
 extern "C" char* __stdcall GetHardwareID();
 extern "C" char* __stdcall GetHardwareIDEx( BYTE ModeID );
...
#endif

#endif


Ну и собственно код, попытался вычленить суть:

Код: 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.
/*
 * main_process.cxx
...
 */
...
#include "include/aspr_api.h" 
#pragma comment(lib,"include/aspr_ide.lib") 
...
//ниже типа глобальные переменные
char*	UserInfo = "";
char*	Key = "";
char*	HardwareID = "";
char*	OldHardwareID = "";

/////////////////////////////////////////////////////////////////////////////
class ProgaName : public PProcess
{
  PCLASSINFO(ProgaName, PProcess)

  public:
    ProgaName();

    void Main();

  protected:
    PBoolean Initialise();
};

PCREATE_PROCESS(ProgaName);
///////////////////////////////////////////////////////////////
ProgaName::ProgaName()
  : PProcess("ProgaName", "BlaBlaBla",
             MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER)
{
}

void ProgaName::Main()
{
  HardwareID = GetHardwareIDEx(2);
  OldHardwareID = GetHardwareID();
  GetRegistrationInformation(0, &Key, &UserInfo);
...


Go To Definition/Go To Declaration - для всех 3-х функций в aspr_api.h перепрыгивает, т.е. видит
а компиляция выдает:
автор1>..\main_process.cxx(189) : error C3861: 'GetHardwareIDEx': identifier not found
1>..\main_process.cxx(190) : error C3861: 'GetHardwareID': identifier not found
1>..\main_process.cxx(191) : error C3861: 'GetRegistrationInformation': identifier not found

Если продублировать заголовки функций в .cxx файле (в правильности чего сомневаюсь)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
...
extern "C" char* __stdcall GetHardwareID();
extern "C" char* __stdcall GetHardwareIDEx( BYTE ModeID );
extern "C" BOOL  __stdcall GetRegistrationInformation( BYTE ModeId, char** Key, char** Name);
//ниже типа глобальные переменные
char*	UserInfo = "";
...


, то имеем
Код: plaintext
1.
2.
3.
4.
1>Linking...
1>main_process.obj : error LNK2019: unresolved external symbol _GetRegistrationInformation@12 referenced in function "public: virtual void __thiscall ProgaName::Main(void)" (?Main@ProgaName@@UAEXXZ)
1>main_process.obj : error LNK2019: unresolved external symbol _GetHardwareID@0 referenced in function "public: virtual void __thiscall ProgaName::Main(void)" (?Main@ProgaName@@UAEXXZ)
1>main_process.obj : error LNK2019: unresolved external symbol _GetHardwareIDEx@4 referenced in function "public: virtual void __thiscall ProgaName::Main(void)" (?Main@ProgaName@@UAEXXZ)



Ну, т.е. мне надо получить HardwareID, OldHardwareID, Key, UserInfo через API определенные в aspr_api.h
дабы оперировать ими в ProgaName::Main()


Где косяк?
...
Рейтинг: 0 / 0
error C3861: '...': identifier not found Вроде все включил, а не компилируется.
    #38997453
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

не подключил объектные модели или библиотеки с этими функциями.
...
Рейтинг: 0 / 0
error C3861: '...': identifier not found Вроде все включил, а не компилируется.
    #38997462
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

везде самая верхушка .cxx

Так ругается:
Код: plaintext
1.
2.
3.
4.
5.
#include "include/aspr_api.h" 
#pragma comment(lib,"include/aspr_ide.lib")

#include <ptlib.h>
...


Так ругается:
Код: plaintext
1.
2.
3.
4.
5.
#include "include/aspr_api.h" 
#pragma comment(lib,"../include/aspr_ide.lib")

#include <ptlib.h>
...


Так ругается:
Код: plaintext
1.
2.
3.
4.
5.
#include <ptlib.h>

#include "include/aspr_api.h" 
#pragma comment(lib,"include/aspr_ide.lib")
...


Так взяло и скомпилировалось ни с того ни с сего:
Код: plaintext
1.
2.
3.
4.
5.
#include <ptlib.h>

#include "include/aspr_api.h" 
#pragma comment(lib,"../include/aspr_ide.lib")
...


Что интересно, aspr_api.h и aspr_ide.lib лежат в одной и той же include папке и хз как последовательность может влиять.
Если нижний вариант заработает после доводки и защиты (предполагаю что ДА раз компильнулось), даже не хочу знать почему.
...
Рейтинг: 0 / 0
error C3861: '...': identifier not found Вроде все включил, а не компилируется.
    #38997477
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понимаю, объектный модуль aspr_ide.lib нужен только для того чтоб скомпилировалось, ну и для организации каких-то там дебагов в IDE если надо, а вся реальная кухня пристыковывается на момент защиты файла.

авторНовый API реализован посредством стандартных импортируемых функций. ASProtect 32 просматривает секцию с таблицей импортов модуля и ищет некоторые заранее заданные имена. Когда модуль загружается, ASProtect 32 эмулирует все найденные API-функции.
Вам необходимо защитить приложение или эмулировать API-функции с помощью ASProtect IDE, для того чтобы использовать ASProtect 32 API!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / error C3861: '...': identifier not found Вроде все включил, а не компилируется.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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