Andrei
Andrei wrote:
> Hallo Jean and other curlpp contributors,
>
> I see the life around curlpp got more active the latest months. As a
> result there are a number of issue requests around in the maillist. IMHO
> there is a time to have an issue tracker for the project.
>
> I do not see it is much work (for Jean?) to make formal issues out of
> relevant discussions, however the whole project will significantly
> benefit from this.
>
> What do you think?
Thanks for your comments.
I agree it would be nice to have issue/bug tracker.
Jean is going to set up curlpp-devel as we miss it a much. Until then Jean asked to send devel posts directly to his email. It was ok when there were lately only two of us making changes but as there are now three of us we should use this list until curlpp-devel is set up. Otherwise our communication would be very troublesome.
If you have 4 spare hours this weekend (great :)) I would like to invite you to share your opinion on problems mentioned in my posts during the last week. If you and Jean agree my ideas are good I'll try to spend some time implementig them.
Right now the biggest issue in my opinion is we can't use curlpp as a library :) What I mean saying this is we can only use it in a source code version like many other template based libraries. If someone builds a .lib out of curlpp this .lib only have templates instantiated in any of .cpp files of library. Many are not instantiated and thus not included in the .lib file. If all code of curlpp needed by clients would be placed in a .lib file (as it should) then users' projects wouldn't need to include .inl files. Try to empty all .inl files of your curlpp and see if you can compile/link any of examples.
Below are my posts regarding this matter I sent lately to Jean. Please take a look at them.
Regards
Piotr Dobrogost
===========================================================================================================================
Jean
Have you ever tried to use curlpp as a dynamic library?
I think it's not possible with the current source but there are no reasons not to allow this.
The problem with using curlpp as a dynamic library are templates. But curlpp uses templates only as implementation tool and doesn't operate on user defined types. Am I right? If this is true then we could add explicit instantiations of each template with all types it supports and this will allow to compile and use curlpp as a dynamic library. We should then include inl files only if CURLPP_STATICLIB is defined as having definitions of dll import functions doesn't make sense and is not allowed.
Waiting to hear your opinion.
===========================================================================================================================
Piotr
I don't see why it wouldn't be possible to have curlpp as a dynamic library, since folks at my
office are using it that way. I admit that they are using it under linux but I don't see what would
be the difference in windows. Sorry, but I really don't see what it is the problem that forbid you
to use it as a dynamic library.
===========================================================================================================================
Jean
Jean-Philippe Barette-LaPierre wrote:
> I don't see why it wouldn't be possible to have curlpp as a dynamic library, since folks at my office are using it that way. I admit that they are using it under linux but I don't see what would be the difference in windows.
How come? :) If they use it as a library (in fact doesn't matter wheather it's static or dynamic; the problem is the same) then make all inl files in their curlpp empty and let them compile and link their app. I think their app won't even compile anymore not to mention linking.
What they are really using as a library is only a small subset of curlpp without templates. Everything else is compiled right into _apps_ object files and not taken from the object file of the lib.
> Sorry, but I really don't see what it is the problem that forbid you to use it as a dynamic library.
Curlpp uses templates. How could templates without explicit instantiation be placed in a library? In any library there always are only compiled entities not source code. That's why all libraries having templates are shipped in soure code only.
Take a look at this
http://social.technet.microsoft.com/Forums/en-US/vcgeneral/thread/0c457caa-1896-41d6-ab1c-53baf9d5bbf6
Pay attenion to
//
extern "C"
{
__DLL_SPEC_ double mod(double x, double y) throw();
}
#endif
declaration in umath.h header (library's header) and
template __DLL_SPEC_
double UMath::mod<double>(double x, double y) throw();
explicit instantiation of mod for T=double in umath.cpp source file (library's source).
Without the first declaration in library's header and without the second definition in library's source file there's no way to use mod template member function for any type in application code using this library. Without explicit instantiation there's no code for mod in library at all.
Take a look at this
http://www.codeproject.com/KB/cpp/MemberTemplateDLL.aspx
Don't bother it's MS.
Take a look at this
http://www.digitalmars.com/d/archives/digitalmars/D/learn/Function_Templates_in_DLL_11958.html
Don't bother it's D not C++ :) Problem is exactly the same in both languages.
Take a look at this
http://groups.google.com/group/microsoft.public.dotnet.languages.vc/browse_thread/thread/b7296845350c41de/5fa53f71da7f5e1f%25235fa53f71da7f5e1f?tvc=2
Don't bother it's MS. Don't bother with /CLR stuff.
Regards
Piotr
===========================================================================================================================
_______________________________________________
cURLpp mailing list
cURLpp_at_rrette.com
http://www.rrette.com/mailman/listinfo/curlpp
Received on 2008-11-22