Ir ao conteúdo

Posts recomendados

Postado

como usar as opções do Linker no Code Blocks?

eu tenho 1 class que usa o operador '='(overloading operators) e Lambdas.
eis como compila:

Citação

 

"

-------------- Clean: Debug in classcontrols (compiler: GNU GCC Compiler)---------------

Cleaned "classcontrols - Debug"

-------------- Build: Debug in classcontrols (compiler: GNU GCC Compiler)---------------

g++.exe -Wall -g  -c C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\main.cpp -o obj\Debug\main.o
g++.exe  -o bin\Debug\classcontrols.exe obj\Debug\main.o  -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32  -lgdi32 -luser32 -lkernel32 -lcomctl32 "..\..\..\..\..\Program Files\CodeBlocks\mingw32\i686-w64-mingw32\lib\libmsimg32.a" "..\..\..\..\..\Program Files\CodeBlocks\mingw32\i686-w64-mingw32\lib\libwinmm.a" "..\..\..\..\..\Program Files\CodeBlocks\mingw32\i686-w64-mingw32\lib\libgdiplus.a" "..\..\..\..\..\Program Files\CodeBlocks\mingw32\i686-w64-mingw32\lib\libgdi32.a" "C:\Program Files (x86)\CodeBlocks\MinGW\i686-w64-mingw32\lib\libbgi.a" -mwindows
In file included from C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\main.cpp:1:
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h: In static member function 'static LRESULT label::WndProcLabel(HWND, UINT, WPARAM, LPARAM)':
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h:2077:43: warning: comparison of integer expressions of different signedness: 'color' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
                     if (inst->clrBackColor==-1)
                         ~~~~~~~~~~~~~~~~~~^~~~
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h: In member function 'void form::setParent(HWND)':
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h:2949:118: warning: passing NULL to non-pointer argument 1 of 'HWND__* CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID)' [-Wconversion-null]
                                   CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, parent, NULL, mod, this);
                                                                                                                      ^
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h: In static member function 'static LRESULT form::WndProcForm(HWND, UINT, WPARAM, LPARAM)':
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h:2994:24: warning: unused variable 'KeyDownCount' [-Wunused-variable]
             static int KeyDownCount=0;
                        ^~~~~~~~~~~~
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\main.cpp: At global scope:
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\main.cpp:9:14: error: redefinition of 'std::__cxx11::wstring towstring(const string&)'
 std::wstring towstring(const std::string& v)
              ^~~~~~~~~
In file included from C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\main.cpp:1:
C:\Users\Utilizador\Documents\CodeBlocks\classcontrols\cambalinho.h:359:14: note: 'std::__cxx11::wstring towstring(const string&)' previously defined here
 std::wstring towstring(const std::string& v)"

 

isto foi retirado do 'Build Log'. como vê tenho imensos erros, mas sei que é do compilador ou opções do Linker.

eu criei a classe, por isso funcionou na criação, mas após reinstalar o Code Blocks, perdi tudo... ao menos tenho a classe 😉

  • Curtir 1
Postado
2 horas atrás, Cambalinho disse:

main.cpp:9:14: error: redefinition of 'std::__cxx11::wstring towstring(const string&)'

 

2 horas atrás, Cambalinho disse:

cambalinho.h:359:14: note: 'std::__cxx11::wstring towstring(const string&)' previously defined here

 

O compilador está sendo bem claro sobre o problema: Você definiu a função towstring() duas vezes; aparentemente na linha 9 do main.cpp e na linha 359 do cabeçalho cambalinho.h.

  • Curtir 2
Postado

tem razão.. eu resolvi isso e muito mais.. verdade algumas classes\funções estavam repetidas e nem me tinha apercebido....

agora tenho alguns avisos que não consigo resolver:

1)

hwnd = CreateWindowEx(0, classname, strCaption.c_str(),WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
                                  CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, parent, NULL, mod, this);

tive de usar '0' para evitar 1 aviso.. e não posso usar 'NULL'.

 

2)

if (inst->clrBackColor==-1)

'clrBackColor' é 1 objeto de:

typeredef(COLORREF color);

o '-1' é transparente... se calhar deveria outro tipo de variável.

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!