Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Может ли третий проверка возвращаемого функцией значения влиять на результат линковки?

12.03.2013, 01:38. Показов 1545. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не торопитесь с ответом. Я тоже так думал.
Кропаем dll:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//dllka.cpp
#include <unknwn.h>
void f(){
  
  //Размер взят от балды
  char x [23];
 
  //так ругается
  //if(memcmp(&x,&IID_IUnknown,2)); 
  
  //а так нет
  memcmp(&x,&IID_IUnknown,2); 
}
Bash
1
2
3
4
5
rem кропаем dll
g++ -c -DBUILD_DLL dllka.cpp
g++ -shared -o dllka.dll -Wl,--out-implib,libdllka.a dllka.o
del dllka.o libdllka.a
rem конец кропания dll
Нормально?
Теперь: код, понятно, искусственный. Реальный код много больше, я его просто упрощал до минимума чтобы лишь продемонстрировать ошибку в линковке. В чём же дело, друзья?

...А самое главное, ругается вот на эту фигню:
Bash
1
2
3
4
g++ -shared -o dllka.dll -Wl,--out-implib,libdllka.a dllka.o
Creating library file: libdllka.a
dllka.o:dllka.cpp:(.text+0x12): undefined reference to `IID_IUnknown'
collect2: ld returned 1 exit status
Ну это вообще вне моего понимания. Если он не может распознать IID_IUnknown, что же он её как-то выборочно не может распознать? То может то не может.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.03.2013, 01:38
Ответы с готовыми решениями:

Назначение возвращаемого значения функцией
Уважаемые форумчане, помогите пожалуйста ответить на пару тройку вопросов:wall: 1.Поясните назначение возвращаемого значения функцией....

Сохранение возвращаемого функцией значения
Ещё одна проблема с которой столкнулся, моя програмка создает заказы и сохраняет на отдельном лсите, при сохранении заказа макрос копирует...

Укажите тип возвращаемого функцией значения
Для каждой функции в выражении print(list(map(int, input().split()))) укажите тип возвращаемого значения (результата)(list; map; NoneType;...

19
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
12.03.2013, 01:44
Цитата Сообщение от kravam Посмотреть сообщение
//так ругается
Цитата Сообщение от kravam Посмотреть сообщение
//а так нет
Цитата Сообщение от kravam Посмотреть сообщение
...А самое главное, ругается вот на эту фигню:
ещё раз - оно хоть раз слинковалось или вообще не линкуется?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.03.2013, 01:57  [ТС]
конечно не слинковалось. Образовалось два файла *.o и *a, а dll нет; при такой ошибке линковщика
Bash
1
undefined reference to ...
Насколько я знаю dll или exe нет и быть не может. Надо из названия темы убрать слово "третий"
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
12.03.2013, 02:22
попробуй прилинковать libuuid.a
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.03.2013, 11:24  [ТС]
Ладно, упростим себе жизнь, попробуем кропать чисто dll, без *.a:

C++
1
2
3
4
5
6
7
8
9
10
11
//dllka.cpp
#include <unknwn.h>
void f(){
  
  //Размер взят от балды
  char x [23];
 
  //так ругается
  if(memcmp(&x,&IID_IUnknown,2)); 
  
}
компилим:
Bash
1
2
g++ -c -DBUILD_DLL dllka.cpp
g++ -shared -o dllka.dll "E:\Dev_Cpp_nomingw\lib\libuuid.a" dllka.o
получаем ошибку при линковке:

Bash
1
2
3
g++ -shared -o dllka.dll "E:\Dev_Cpp_nomingw\lib\libuuid.a" dllka.o
dllka.o:dllka.cpp:(.text+0x12): undefined reference to `IID_IUnknown'
collect2: ld returned 1 exit status
Но это же ложь! Смотрим:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
nm dllka.o
00000000 b .bss
00000000 d .data
00000000 r .eh_frame
00000000 t .text
 
         //Вот идентификатор
         U _IID_IUnknown
 
 
00000000 T __Z1fv
         U _memcmp
и далее:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
nm "E:\Dev_Cpp_nomingw\lib\libuuid.a"
 
...
00000000 r .rdata
00000000 t .text
00000010 R _IID_IClassFactory
 
//И вот идентификатор!
00000000 R _IID_IUnknown
 
servprov-uuid.o:
00000000 b .bss
00000000 d .data
...
То есть _IID_IUnknown присутствует как в файле dllka.o, на базе которого я и строю *.dll, так и в libuuid.a, который я прилинковываю. Тем не менее, ничё не прилинковывается, сами видите

Добавлено через 14 минут
++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++

Ещё упрощаем жизнь. Кропаем не dll, а exe:
C++
1
2
3
4
5
6
7
8
9
10
//dllka.cpp
#include <unknwn.h>
int main (){
  
  //Размер взят от балды
  char x [23];
 
  //так ругается
  if(memcmp(&x,&IID_IUnknown,2)); 
}
компилим:
Bash
1
2
g++ -c main.cpp
g++ -o main.exe "E:\Dev_Cpp_nomingw\lib\libuuid.a" main.o
Те же ошибки, _IID_IUnknown присутствует как в libuuid.a, так и в main.o

Добавлено через 13 минут
В MSVS на ура всё проходит...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <unknwn.h>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
        //Размер взят от балды
  char x [23];
 
  //так ругается
  if(memcmp(&x,&IID_IUnknown,2)); 
 
    return 0;
}
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
12.03.2013, 11:35
C++
1
#include <unknwn.h>
может его как то отдельно нужно компилировать(или задать доп опции компилятору)

Добавлено через 9 минут
насколько я понял для g++ это нестандартный заголовок
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.03.2013, 11:37  [ТС]
Может быть. Но как правильно из *.h файла получить *.o файл, я не знаю...


Цитата Сообщение от XRuZzz Посмотреть сообщение
насколько я понял для g++ это нестандартный заголовок
Цитата Сообщение от XRuZzz Посмотреть сообщение
#include <unknwn.h>
Не знаю, что уж в нём нестандартного... Заголовок как заголовок, у меня сотня таких.
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
12.03.2013, 11:44
вот например строки из unknwn.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
//////////////////////////////////////////////////////////////////
// IID_IUnknown and all other system IIDs are provided in UUID.LIB
// Link that library in with your proxies, clients and servers
//////////////////////////////////////////////////////////////////
 
#if (_MSC_VER >= 1100) && defined(__cplusplus) && !defined(CINTERFACE)
    EXTERN_C const IID IID_IUnknown;
    extern "C++"
    {
        MIDL_INTERFACE("00000000-0000-0000-C000-000000000046")
        IUnknown
        {
 
...
#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("00000000-0000-0000-C000-000000000046")
    IUnknown
    {
то есть можно попробовать расставить нужные defin-ы перед include.

обратите внимание на комментарий перед условной компиляцией. по ходу надо прилинковать UUID.LIB
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.03.2013, 11:54  [ТС]
Цитата Сообщение от XRuZzz Посмотреть сообщение
то есть можно попробовать расставить нужные defin-ы перед include.
Да не нужно. Необходимые define и так расставлены. Если бы это было не так, идентификатора IID_IUnknown просто напросто бы не было в получившемся файле *.o. (препроцессор не включил бы его в сырец, который подаётся на вход компилятору).А он там есть.

Цитата Сообщение от XRuZzz Посмотреть сообщение
обратите внимание на комментарий перед условной компиляцией. по ходу надо прилинковать UUID.LIB
что я и делаю:
Bash
1
g++ -o main.exe "E:\Dev_Cpp_nomingw\lib\libuuid.a" main.o
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
12.03.2013, 12:00
не понимаю откуда в g++ возьмётся define _MSC_VER
а если линковать файл студии в g++
C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib
?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.03.2013, 12:05  [ТС]
Вот мой файл unknwn.h

C++
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#endif
 
#ifndef _UNKNWN_H
#define _UNKNWN_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
 
#ifdef __cplusplus
extern "C"{
#endif
#include <objfwd.h>
#include <wtypes.h>
 
void * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free(void*);
EXTERN_C const IID IID_IUnknown;
EXTERN_C const IID IID_IClassFactory;
#ifndef __IUnknown_INTERFACE_DEFINED__
#define __IUnknown_INTERFACE_DEFINED__
#define INTERFACE IUnknown
DECLARE_INTERFACE(IUnknown)
{
    STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
};
#undef INTERFACE
typedef IUnknown *LPUNKNOWN;
#endif
#ifndef __IClassFactory_INTERFACE_DEFINED__
#define __IClassFactory_INTERFACE_DEFINED__
#define INTERFACE IClassFactory
DECLARE_INTERFACE_(IClassFactory,IUnknown)
{
    STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE;
    STDMETHOD(LockServer)(THIS_ BOOL) PURE;
};
#undef INTERFACE
typedef IClassFactory *LPCLASSFACTORY;
#endif
HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(IUnknown*,REFIID,void**);
void __RPC_STUB IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(IUnknown*);
void __RPC_STUB IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(IUnknown*);
void __RPC_STUB IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
HRESULT STDMETHODCALLTYPE IClassFactory_RemoteCreateInstance_Proxy(IClassFactory*,REFIID,IUnknown**);
void __RPC_STUB IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
HRESULT __stdcall IClassFactory_RemoteLockServer_Proxy(IClassFactory*,BOOL);
void __RPC_STUB IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Proxy(IClassFactory*,IUnknown*,REFIID,void**);
HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Stub(IClassFactory*,REFIID,IUnknown**);
HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Proxy(IClassFactory*,BOOL);
HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Stub(IClassFactory*,BOOL);
 
#if (!defined (__cplusplus) || defined (CINTERFACE)) \
    && defined (COBJMACROS)
#define IUnknown_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O)
#define IUnknown_AddRef(T) (T)->lpVtbl->AddRef(T)
#define IUnknown_Release(T) (T)->lpVtbl->Release(T)
#define IClassFactory_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O)
#define IClassFactory_AddRef(T) (T)->lpVtbl->AddRef(T)
#define IClassFactory_Release(T) (T)->lpVtbl->Release(T)
#define IClassFactory_CreateInstance(T,p,r,O) (T)->lpVtbl->CreateInstance(T,p,r,O)
#define IClassFactory_LockServer(T,f) (T)->lpVtbl->LockServer(T,f)
#endif /* COBJMACROS */
#ifdef __cplusplus
}
#endif
#endif
Больше идентификатор IID_IUnknown НИГДЕ, ни в одном из файлов*.h не упоминается.
И чё мне делать теперь?
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
12.03.2013, 12:16
ну если немного расшифровать строку
C++
1
EXTERN_C const IID IID_IUnknown;
то получится
C++
1
extern "C" const GUID IID_IUnknown;
дальше лень копаться )

где то GUID должна быть определена скомпилирована и прилинкована
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.03.2013, 12:28  [ТС]
Вот стркутура GUID
C++
1
2
3
4
5
6
7
//winnt.h
typedef struct _GUID {
    unsigned long  Data1;
    unsigned short Data2;
    unsigned short Data3;
    unsigned char  Data4[8];
} GUID, *REFGUID, *LPGUID;
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
12.03.2013, 12:59
зачем вам проверять
C++
1
if (memcmp ...
на g++
?

Добавлено через 1 минуту
как это поможет пользователю?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//dllka.cpp
#include <unknwn.h>
void f(){
  
  //Размер взят от балды
  char x [23];
 
  //так ругается
  //if(memcmp(&x,&IID_IUnknown,2)); 
  
  //а так нет
  memcmp(&x,&IID_IUnknown,2); 
}
тут скорее всего при оптимизации компилятор выкидывает сравнение memcmp(&x,&IID_IUnknown,2);

может попробовать с опцией -O0?

Добавлено через 18 минут
поздравляю вам удалось заставить меня скомпилить ваш пример.

это удаётся только если задать линкеру опцию -luuid
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.03.2013, 13:01  [ТС]
Цитата Сообщение от XRuZzz Посмотреть сообщение
зачем вам проверять
Цитата Сообщение от XRuZzz Посмотреть сообщение
как это поможет пользователю?
Позвольте мне этого не объяснять. Я в первом сообщении сказал, что код утрированный. Если я выложу неутрированный, Вы, извините за выражение, закалебётесь пыль глотать его разбирать. В неутрированном (кстати), присутствует такая строка:

C++
1
2
  if(::memcmp(&riid,&IID_IUnknown,sizeof(GUID)) == 0) 
    //Тут некоторо едействие
Так что проверку условия я ввёл не от балды.

++++++++++++++++++++++++++++++++++++++++ ++++++

тут скорее всего при оптимизации компилятор выкидывает сравнение memcmp(&x,&IID_IUnknown,2);
Там идентификатора IID_IUnknown в *.o файле просто-напросто нет. Я потом уже это обнаружил, но не стал сюда писать, сконцетрировался на другом коде. (Поэтому линковщик не встречает в *.o файле идентификатор IID_IUnknown и, поэтому не ругается.) Почему нет- это второй вопрос. Если это оптимизация, то ну его на фиг такую оптимизацию, не знаю в общем.

Щас возвернёмся к коду:
C++
1
2
3
4
5
6
7
8
9
10
//dllka.cpp
#include <unknwn.h>
int main (){
  
  //Размер взят от балды
  char x [23];
 
  //так ругается
  if(memcmp(x,&IID_IUnknown,2)); 
}
НУ даже пусть мой unknwn.h отличается от вашего (у меня есть оба *.h, но понятно, я работаю с "родным", который и показал), но идентификатор-то IID_IUnknown присутствует как в *.o файле, так и в *.a!


поздравляю вам удалось заставить меня скомпилить ваш пример.
это удаётся только если задать линкеру опцию -luuid
Да я уж и с опцией и всяко компилил, я же писал. Дайте командную строку, а?
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
12.03.2013, 13:09
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iomanip>
using namespace std;
 
#include <unknwn.h>
int main()
{
  //Размер взят от балды
  char x [23];
  if(memcmp(&x,&IID_IUnknown,2))
  {
    int y = compl 10;
    cout << std::hex << y;
  }
return 0;
}
Добавлено через 7 минут
ну для компиляции Eclipse мне показал
g++ -O0 -g3 -Wall -c -fmessage-length=0
а для линковки нет опций, только -luuid в настройках линкера указал

а в консоли пишет так
g++ -o delete2014_forum_help.exe "src\\com_obj.o" -luuid
это у меня MinGW
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.03.2013, 13:21  [ТС]
У меня тоже MinGW
Нужна полностью командная строка. Вот я например компилю в Dev-C++, тоже галки понаставлю где надо, потом смотрю в "Журнал компиляции" и наблюдаю там:

C++
1
g++.exe "E:\papka\main.cpp" -o "E:\papka\main.exe"  -static  -I"E:\Dev_Cpp_nomingw\include"   -L"E:\Dev_Cpp_nomingw\lib" -lgdi32
Я же тоже не вручную это пишу (только -static да -lgdi32); вот нечто подобное мне и надо.
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
12.03.2013, 13:42
так это и есть вся "хистори"

13:19:18 **** Incremental Build of configuration Debug for project delete2014_forum_help ****
Info: Internal Builder is used for build
g++ -o delete2014_forum_help.exe "src\\com_obj.o" -luuid

13:19:18 Build Finished (took 125ms)
папки для includ-ов в проекте указаны, правда я не понимаю как Еclipse компилятору о них сообщает

возможно там в опциях можно настроить вывод, но я не в курсе как это делается
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.03.2013, 13:57  [ТС]
так это и есть вся "хистори"
Не вся, где-то же должно быть по крайней мере имя сырца? Да и с путями не очень всё ясно.

Но как бы то ни было:

ЭТО два варианта с которыми компилится

Bash
1
2
3
4
5
g++ -c main.cpp
g++ -o main.exe main.o -L"E:\Dev_Cpp_nomingw\lib" -luuid  
 
g++ -c main.cpp
g++ -o main.exe main.o "E:\Dev_Cpp_nomingw\lib\libuuid.a"
А это плохие варианты

Bash
1
2
3
4
5
g++ -c main.cpp
g++ -o main.exe -L"E:\Dev_Cpp_nomingw\lib" -luuid main.o  
 
g++ -c main.cpp
g++ -o main.exe "E:\Dev_Cpp_nomingw\lib\libuuid.a" main.o
Но в help к g++ сказано использовать именно плохие варианты! А именно вот этот, что я и делал:
Bash
1
2
g++ -c main.cpp
g++ -o main.exe -L"E:\Dev_Cpp_nomingw\lib" -luuid main.o
Bash
1
2
3
4
Usage: g++ [options] file...
Options:
...
-o <file>
Так что не моя вина. Ладно, спасибо, надо как-то заняться на досуге. Чё будет, напишу.
0
12.03.2013, 14:15

Не по теме:

COM это зло :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.03.2013, 14:15
Помогаю со студенческими работами здесь

Присваивание переменной класса значения, возвращаемого функцией
Здравствуйте. Помогите понять следующую вещь... Допустим есть класс core с функцией get_db_info. Если я её вызову так: $info =...

Тип возвращаемого функцией значения, для вставки в ComboBox
Какого типа должно быть возвращаемое значение, если я получаю от функции список строк для вставки в объекты TComboBox или TTabControl? ...

Как организовать передачу значения возвращаемого функцией JScript?
1)Функция Jscript управляет внешним видом текущей страницы и, кроме того, вырабатывает некое значение. 2) Нажимается Web-кнопка и сервер...

Использование типа void в качестве возвращаемого значения функцией main
Здравствуйте. Надеюсь получить внятный ответ на то, почему все категорически рекомендуют использовать int main(). Для примера возьмем...

По ссылке на функцию получить тип возвращаемого этой функцией значения
Существует задача следующего характера. Шаблон класса параметризуется ссылкой на функцию. Необходимо, чтобы один из членов класса имел тип,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru