As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
My question is very similar in spirit to this question: What is the best plotting library for Python?
What is my best bet for plotting data in C? Am I better off forgoing a library and just generating data that I can feed directly into gnuplot?
My impetus for this question is being able to visualize DSP transformations while studying the excellent resources found in an earlier question of mine. So the focus is really just 2D plots, histograms, etc.; 3D isn't as important right now.
I think you are on the right track with gnuplot. For what you want, it's very powerful and flexible.
However, you may want to consider writing to gnuplot directly from your application instead of creating data and feeding it. There is an ANSI C API to gnuplot available.
MathGL is cross-platform (Windows/Linux/MacOS) free (GPL, LGPL for core) plotting library. It is fast, have a lot of graphics types, can plot huge data arrays, can produce bitmap and vector (EPS/SVG/U3D) output, can use OpenGL, can run in console (don't need X), have many interfaces (Fortran/Python/... to combine with other languages), have FLTK/Qt widgets, can create its own window with plotting, and so on.
libgd. But if you don't have a lot of data to plot, gnuplot is a good way to go, as others suggested.
I've found PLplot which seems to be interesting. I'm trying it right now and I'll publish here a quick review about it as I'll know something more about it.
Update: As first blush it seems to be badly designed, since it adds interactivity to the application (IMHO a library should never directly interface with the user unless this is the library's purpose).
On Mac OS X you may also feed your data directly into Plot which features Perl-based scripting and a command-line interface for non-interactive data processing:
http://plot.micw.eu
In terms of a Mac OS X C-ish plotting framework see core-plot.
have you looked at AntiGrain? it's multiplatform
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Recently I learned Lua, we need it to co-work with existed C code(HTTP server).
From Lua books, we know that there maybe to way to make them co-working:
From Lua, you can wrap C code in share library(xxx.so) that Lua use require to import them.
From C, you can use existed Lua API to operate on lua_state, it's some trick but it works well.
I adopt both of them and everything seems great, by using Lua we can save a lot of time to implement our business logic. But I'm quite nervous about current architecture, although there was no serious problem in it, I always worried about it, if there was some thing happened, for example, serious performance bottleneck, memory related and so on.
Is anyone got rich experience in this, please give some some advice. Thanks.
Lua is designed to work well with both C and C++. The C API is meant for that.
You don't need to create and use shared libraries to extend Lua. It is the easiest way to extend the standard command line interpreter but it should be easy (if not easier) to link static C libraries for Lua in your own application.
If you want to see some examples of C libraries for Lua, see mine. There are many others.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What is a programming language to make program with a GUI. I know there is a way to make a GUI using C in Windows, but I want to program with Linux and make my programs compatible with other OS's as well. Any recommendations?
If all you want to do is make a GUI, why don't you just use HTML?
Alternatively, if you really want it to be a more native app, maybe consider Java.
I know there is a way to make a gui with C in windows but I want to program with Linux
Who told you that you can't write a GUI app in C on Linux...
Also, for whipping up quick GUIs, there's wxPython.
You cannot create a GUI using the standard C library. You can make one with an external library though.
With OpenCV, it is possible to make a GUI, and there is a large community behind the project. You can find lots of code examples and tutorials on their website. In addition, you can use OpenCV for lots of other computer vision related things.
You could also use GTK+ to write a GUI for your program. It is very simple, and easy to use for beginners. It's more focused on graphics though, and if you want another functionality required by an external library, you might not be able to use GTK+.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Status Quo
For a project of mine I need a client library that communicates with my API for every major programming platform. Currently I implemented just one (Java) and was thinking 'I don't want to do this 8 times (or hope someone else will)'.
The client is relatively small, but not trivial; does mostly JSON reading/writing and sending TCP/UDP data over SSL. Every call to the client is fire-and-forget, so it works completely asynchronously in its own thread.
Problem
I was asking myself if it made sense to write a single C library and integrate it with the other platforms.
I did a bit of research and it seems every platform deals with this differently (obviously) with varying necessary efforts. I also realised that I never saw something like it - for example database drivers always seem to be written from scratch rather than using a C library at the core. Is the overhead too big?
I also read about Thrift, Protocol Buffers etc. - but this seems to be aimed at network interoperability?
Question
So the final question is:
Is it feasible to use a single C library at the core of each platform's client? If yes: how should it be done?
Using a C library makes sense if you want to consolidate all implementations of the same functionality into one piece of code - it is probably the only language that can be universally used by higher level languages.
Your work would be significantly easier if you could automate the process to a degree. You might want to have a look at SWIG. It is a binding generator that allows C/C++ code to be used with a large number of other programming languages, including most, if not all, of the languages that you mentioned.
For my rather superficial experience with it, SWIG does a rather decent job, although the generated code does occasionally need some tweaking...
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am on the look out for a good software for browsing kernel level code written in C. I am currently using source navigator. Are there any better suggestions?
EDIT: I work on systems with both Windows and Linux (Ubuntu), so it should run on at least one of them, but Linux software is preferable.
This might not be what you're shooting for; it's less interactive than a dedicated tool, but I've found LXR to be very useful for providing a web interface front-end for browsing large source repositories. In each file, every symbol is linked to its original definition, so it's easy to dial down to exactly what you're looking for.
It was originally designed for indexing the Linux kernel source, and still does so here, (though I must say I'm not jazzed about the new AJAX interface...)
It can be run on any code base, though; not limited to the Linux kernel. And the web interface makes it easy to access from anywhere and from any system.
Visual Slick Edit does the trick for me.
Good tagging for big code bases, building, macros,light ui and support for many languages.
Unfortunately costs some $.
The reason I mostly wanted to switch from source navigator was that the project had closed down and the new project (Source navigator NG)seemed to be defunct(because the website etc. were down). But today, I checked and they had releases upto 2010. So they are probably still up and running.
Check it out, it has a good GUI and searching is easier than in cscope.
I use doxygen when I receive a big lump of code that I need to do a quick review on. You can use a special syntax in your source to make the doxygen output nice, but it does a decent job without.
netbeans works perfect for me
ctrl+click on any symbol will take you to the definition
then alt+left
very convenient for source code navigation
it's also cross platform
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I've got a C++ app that ships on Windows and OSX. It communicates with our backend using TCP (encrypted with OpenSSL, natch). I'd like to throw up some speed bumps for folks who are trying to reverse engineer the protocol and/or disassemble the executable.
Skype does an excellent job of this, which is why you won't find a lot of apps that speak skype. Here is a really good read about what it does: http://www.secdev.org/conf/skype_BHEU06.handout.pdf
I'd like some ideas about how to accomplish similar stuff our app. Are there commercial products that make code harder to statically analyze? What is the best way to invest my time to accomplish the goals I've listed?
Thanks,
Some simple suggestions for OSX:
Prevent gdb from attaching to your program
http://www.steike.com/code/debugging-itunes-with-gdb/
(this can be worked around, but will keep some casual explorers away)
Have at least some of the code in your product stored outside the text segment of the executable, for example in data, or in an external (encrypted) shared library.
Minimally protect any sensitive string data by not storing it in plain text. Run "strings" against your executable, and if you see anything that might be helpful to someone trying to figure out the protocol, encrypt it.
GCC's -fomit-frame-pointer option can make debugging more painful (but can interact badly with C++ exceptions).
If I remember correctly Skype is using something similar (maybe they pay them to implement it in Skype, who knows) to "Code Guards" described in:
https://www.cerias.purdue.edu/tools_and_resources/bibtex_archive/archive/2001-49.pdf