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

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

ios - Change Storyboard View using Seague -