# C Programming/Mixing languages

## Assembler

See Embedded Systems/Mixed C and Assembly
Programming

## Cg

Make the main program (for CPU) in C, which loads and run the
Cg "wikilink") program ( for GPU
).[^1][^2][^3]

### Header files

Add to C program:[^4]

``` c
#include <Cg/cg.h> /* To include the core Cg runtime API into your  program */
#include <Cg/cgGL.h>  /* to include the OpenGL-specific Cg runtime API */
```

### Minimal program

-   by bobobobo[^5]

## Java

Using the Java native interface (JNI), Java applications can call C
libraries.

See also

-   Java_Programming/Keywords/native

## Perl

To mix Perl and C, we can use XS. XS is an interface description file
format used to create an extension interface between Perl and C code (or
a C library) which one wishes to use with Perl.

The basic procedure is very simple. We can create the necessary
subdirectory structure by running \"h2xs\" application (e.g. \"h2xs -A
-n Modulename\"). This will create - among others - a Makefile.PL, a .pm
Perl module and a .xs XSUB file in the subdirectory tree. We can edit
the .xs file by adding our code to that, let\'s say:

`void`\
`hello()`\
`  CODE:`\
`    printf("Hello, world!\n");`

and we can successfully use our new command at Perl side, after running
a \"perl Makefile.PL\" and \"make\".

Further details can be found on the
perlxstut
perldoc page.

## Python

Here can be found some details about extending Python with modules
written in C. You
might read about Cython and
Pyrex as
well, that makes easier to create modules in C, translating a
Python-like code into C.  Using the Python
ctypes module, one can
write C code directly into Python.

## Further reading

-   Embedded Systems/Mixed C and Assembly
    Programming

## References

```{=html}
<references/>
```
pl:C/Łączenie z innymi
językami


[^1]: Lesson: 47 from NeHe
    Productions

[^2]: Cg Bumpmapping by Razvan Surdulescu at
    GameDev

[^3]: \[<http://www.fusionindustries.com/default.asp?page=cg-hlsl-faq>
    \| Cg & HLSL Shading Language FAQ

    `by Fusion Industries]`

[^4]: <http://http.developer.nvidia.com/CgTutorial/cg_tutorial_appendix_b.html>
    NVidia Cg tutorial. Appendix B. The Cg Runtime

[^5]: Absolutely minimal CG program for good fundamentals
    understanding
