c++ - embed resource to native exe from c# -


i want embed resource in exe file using c#.

if use c++ code works :

updateresource(hresource,rt_rcdata,makeintresource(104), makelangid(lang_neutral, sublang_default),(lpvoid)text,filesize); 

c# code use :

 intptr handle = beginupdateresource(this.nomefilecryptato, false);  intptr fileptr = toptr(encrypted);  bool res = updateresource(handle, "rt_rcdata", "104", 1040, fileptr,     convert.touint32(encrypted.length));  endupdateresource(handle, false); 

actualy, c# code embed resource in exe file (let's call a.exe) if embed resource c++, a.exe can read , extract, if embed c#, a.exe cannot.

any ideas?


this declaration update resource in c# :

 [dllimport("kernel32.dll", setlasterror = true)]     static extern bool updateresource(intptr hupdate, string lptype, string lpname, ushort wlanguage,   intptr lpdata, uint cbdata); 

lptype , lpname both strings , if use updateresource(handle, "rt_rcdata", "104", 1040, fileptr, convert.touint32(encrypted.length)); updateresource add resource correctly exe.

the problem on c++. reach resource added c# have use lpcstr without use of makeintresource macro.

lpcstr nome = "cdata"; lpcstr tipo = "104"; hlibrary = loadlibrary(this->filename); hresource = findresource(hlibrary, tipo, nome); 

thanks again time!

you appear passing incorrect values, , since they're not shown, assume functions (toptr, beginupdateresource, updateresource, , endupdateresource) may incorrectly defined well.

note makeintresource(104) casts integer value 104 string pointer; not create string value "104". rt_rcdata macro value other "rt_rcdata", such makeintresource(10).

so start beginning. declaration of updateresource like? found 2 contradictory examples:

the first makes hard handle integer ids; second makes hard handle strings. guess expect use intptr both type , name parameters.

once sort out, next bit understanding makeintresource macro's equivalent in c#. , requires understanding how makeintresource smuggles integers in pointers. once understand that, it's easy tell need pass here pass integers 104 or 10 updateresource.


Comments

Popular posts from this blog

inversion of control - Autofac named registration constructor injection -

ios - Change Storyboard View using Seague -

verilog - Systemverilog dynamic casting issues -