[MSVC++] resources in libraries linken niet mee

Pagina: 1
Acties:

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
Als je een library maakt met resource files (*.rc) erin, dan worden deze niet meegelinkt met het programma dat die .lib gebruikt

Ik weet dat object files enzo in libs alleen worden meegelinkt als er een referentie naar is, maw alleen als er unresolved external symbols zijn gaat ie zoeken in de libs of ze daar misschien bij staan, zo ja dan worden ze meegelinkt.

Voor resourcefiles is natuurlijk geen enkele referentie omdat je gewoon resource identifiers gebruikt die in een header zijn gedefinieer en gebruik maakt van de Windows API om wat met die resources (een dialog box template in mijn geval) te doen.

Dus mijn vraag is: hoe zorg ik ervoor dat de sourcecode die wat met die resources doet ook echt refereert naar die resources, zodat ze worden meegelinkt als ik ze nodig heb

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

AFAIK (gebruik MSCV++ niet) wordt maar één (de eerste) object met resources herkend door Windows, dus moet je voor een statisch gelinkte library de bijbehorende .rc file #includen in je "normale" .rc file. DLLs hebben dat probleem uiteraard niet.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
wat bedoel je met de 'normale' .rc file?

ik heb op het moment maar 1 rc file, en dat is die in die lib. Bedoel je dat ik voor het project waarin ik die lib wil gebruiken een .rc moet aanmaken en daar die .rc uit die lib moet includen?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
* bump *

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Resources in libs schijnt wel te kunnen, maar met veel haken en ogen, kan je niet weg komen door je resources in een los dll'etje mee te leveren?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
nou nee, das niet bepaald de oplossing :)

ik heb gewoon een grote lib met utility classes en functies die ik vaak in projectjes gebruik, en nou heb ik een dialog box template nodig als resource... kan ik wel in een dll'etje zetten, maar das zo'n omweg (hebben mijn executables weer een extra dll nodig enzo terwijl dat in principe helemaal niet nodig hoeft te zijn). Dus ik vroeg me af hoe dan wel gewoon kon... maar dat schijnt dus niet echt te kunnen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

code:
1
2
3
#include "file generated by VC++ WYSIWYG editor for project.rc"
#include "file generated by VC++ WYSIWYG editor for library.rc"
#include "other stuff.rc"

In een dll bakken, of een file als hierboven gebruiken om je resources in 1 object file te krijgen.

Ook nuttig als je wat pre-processor magic wilt gebruiken in je resources.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
mmja dat is meer een oplossing voor het gebruiken van meerdere resource files... ik heb er maar een, maar hij staat in een lib, dus hij wordt niet meegelinkt.

ik weet ik al wat ik ga doen, ik convert die binary resource naar een object file, en die link ik gewoon mee, en dan gebruik ik CreateDialogIndirect () wel (maw ik haal de resource uit het geheugen ipv dat ik windows naar die resource in de executable laat zoeken)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1