Connecting Tech Pros Worldwide Forums | Help | Site Map

How protect source code in template library?

Lokicer
Guest
 
Posts: n/a
#1: Jul 23 '05
Hi!
I am a newbie in C++, it seems compiler must see the source code of
template classes(with .h files and .cpp files£©when compile. I want to
prevent others from getting .cpp files. How should i do?

Thanks!



Jack Klein
Guest
 
Posts: n/a
#2: Jul 23 '05

re: How protect source code in template library?


On Mon, 28 Feb 2005 13:25:39 +0800, "Lokicer" <lokicer@163.com> wrote
in comp.lang.c++:
[color=blue]
> Hi!
> I am a newbie in C++, it seems compiler must see the source code of
> template classes(with .h files and .cpp files£©when compile. I want to
> prevent others from getting .cpp files. How should i do?
>
> Thanks![/color]

Then don't distribute your code with template classes. Provide
binaries of pre-compiled classes only with header files. Be prepared
to produce many different versions for different operating systems,
compilers, and even versions of the same compiler.

Or select another language. C++ is not particularly designed for
this.

--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://www.eskimo.com/~scs/C-faq/top.html
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html
Ivan Vecerina
Guest
 
Posts: n/a
#3: Jul 23 '05

re: How protect source code in template library?


"Lokicer" <lokicer@163.com> wrote in message
news:cvua3b$974$1@mail.cn99.com...[color=blue]
> I am a newbie in C++, it seems compiler must see the source code of
> template classes(with .h files and .cpp files£©when compile. I want to
> prevent others from getting .cpp files. How should i do?[/color]

To instantiate template code for new (user-provided) data types,
the compiler does need to see the template source code (which
is commonly left into .h files). You can't get around that,
but your template code could be a thin layer around non-template
code (stored in .cpp files) that you distribute into a
compiled library.
It is common enough for proprietary C++ libraries to be
distributed as, e.g. on Windows, .h files and a .lib+.dll
compiled library (NB: this is OT here, ask on a platform-
specific newsgroup).

When you do that, you need to be aware potential
incompatibilities among C++ compilers on some platforms
(while the way to call C-style functions is pretty much
standardized everywhere, on some operating systems/processors
classes/overloaded functions/etc can be implemented in
incompatible ways -- different "ABI"s).
This is probably what Jack Klein was thinking about.

Besides that, C++ is actually among the languages that
are the more difficult to reverse-engineer from compiled code.


Ivan
--
http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form


Closed Thread