Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / error C3861: '...': identifier not found Вроде все включил, а не компилируется. / 4 сообщений из 4, страница 1 из 1
02.07.2015, 06:25
    #38997435
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
error C3861: '...': identifier not found Вроде все включил, а не компилируется.
Код: 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
02.07.2015, 07:51
    #38997453
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
error C3861: '...': identifier not found Вроде все включил, а не компилируется.
Дмитрий77,

не подключил объектные модели или библиотеки с этими функциями.
...
Рейтинг: 0 / 0
02.07.2015, 08:18
    #38997462
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
error C3861: '...': identifier not found Вроде все включил, а не компилируется.
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
02.07.2015, 08:35
    #38997477
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
error C3861: '...': identifier not found Вроде все включил, а не компилируется.
Насколько я понимаю, объектный модуль aspr_ide.lib нужен только для того чтоб скомпилировалось, ну и для организации каких-то там дебагов в IDE если надо, а вся реальная кухня пристыковывается на момент защиты файла.

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


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