michaelrsweet / mxml Goto Github PK
View Code? Open in Web Editor NEWTiny XML library.
Home Page: https://www.msweet.org/mxml
License: Apache License 2.0
Tiny XML library.
Home Page: https://www.msweet.org/mxml
License: Apache License 2.0
Version: 2.2
Original reporter: Michael Sweet
The documentation says "The constant MXML_NO_PARENT can be used to specify that the new text node has no parent. "
As I understand that means that a Text Node with no parent could be created.
But the code says:
if (!parent || !string)
return (NULL);
So no node is created.
This is a mistake or its the correct way?
Daniel Luyo
Version: 2.2
Original reporter: Michael Sweet
I have created mxml_memwrappers.c/h to provide the ability for Mini-XML to call user-registered callback functions for all memory allocation functions. The system in which I work requires this ability since we use our own heap managers.
Since this is the only change I have had to make to Mini-XML, I would like to contribute it to the project so that, as updates and bug fixes are released the changes will persist.
It requires only minimal change to the code in that the wrapped versions of malloc, strdup, free, etc., must be called instead of calling the vanilla C functions. I have named the new functions mxml_malloc, mxml_strdup, etc.
I am posting this as a "feature request" as I cannot find a more suitable place to ask how to submit a patch against the code back to the maintainers.
Version: 2.0
Original reporter: Michael Sweet
The UTF-8 loading code does not enforce the shortest form of a UTF-8 encoded character; reference:
http://www.unicode.org/versions/corrigendum1.html
Thus, it should be returning an error when reading a 2-6 byte value that needs less than the given number of bits.
Also see:
http://www.cl.cam.ac.uk/~mgk25/unicode.html
Version: 1.3
Original reporter:
I write a simplest whitespace callback function as follows:
int whitespace_cb(mxml_node_t *node, int where)
{
return ('\n');
}
Then in another function, I write:
...
mxmlSaveFile(tree, stdout, whitespace_cb);
...
But alway get pointer error, Does anything wrong?
If I change the content of whitespace_cb() to
return('\0');
The error disappers. What strange!
Version: 2.1
Original reporter: Michael Sweet
Hi Michael,
I have done what you said but when the 'mxmlLoadFile' function is called, it doesn´t load all xml document, it stop at the first instance of <!CDATA
Thanks again.
Version: 2.3
Original reporter: Michael Sweet
UTF8 multi-byte characters are considered as white space, because glibc's isspace(int c) function returns true for them. This is at least the case for glibc-2.5 on GNU/Linux.
The attached patch fixes this problem for me and some others, but perhaps there is a more elegant solution by properly casting the int to a suitable char ?
Version: 2.3
Original reporter: Michael Sweet
According to the specification, http://www.w3.org/TR/REC-xml/#NT-Attribute, no white-space is allowed in an attribute definition: e.g. id="foo". Mini-XML therefore assumes no white space, but silently discards the value when there was whitespace.
Therefore, Mini-XML will parse a file with: without any reported errors, but with no value assigned to attribute id.
Version: 2.2.2
Original reporter: Michael Sweet
In testmxml.c line 504 there's this row:
snprintf(buffer, sizeof(buffer), "%sfd", argv[1]);
but snprintf() is not ANSI C standard (C89). Only in C99.
Version: 2.2.2
Original reporter: Michael Sweet
Hi,
I have a problem when I try to retrive a string value of a element, my XML structure is like the follow:
aaaa bbbbI load the file with:
tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
(i tried also tree = mxmlLoadFile(NULL, fp, MXML_TEXT_CALLBACK);)
then i select the "element" node with:
node = mxmlFindElement(tree, tree, "element", NULL,NULL, MXML_DESCEND);
then when i get the string of the child node with:
curr_node->child->value.text.string
I get only "aaaa" instead of "aaaa bbbb", the string terminate at blank space... where is the mistake?
Tanks
Igor
Version: 2.2.2
Original reporter: Michael Sweet
I´m sorry, after reading the documentation and trying a couple hours, I can´t just read the text of a node.
Which method or element of the node structure is to be used?
Thank you.
Version: 2.1
Original reporter: Michael Sweet
The debian maintainer of Mini-XML has asked for shared library support.
Version: 2.2.2
Original reporter: Michael Sweet
Hello Michael,
I want to use your xml Library to parse the meta.xml which contain informations about the OpenOffice document lik Author, Title, creation date and so on.
If I set DEBUG to 2 so I can see that all informations are read in the tree.
But how do I get the informations? e.g for the <meta:user-defined > or <meta:document-statistic >, because each keyword is in a extra child?
I attach the extracted meta.xml
Thank you
Reinhard
Version: 2.3
Original reporter: Michael Sweet
Shouldn't the declaration of mxml_strdupf be:
extern char* _mxml_strdupf(const char *, ...);
Added an extra _ to the name.
Also change the last parameter to remove a warning.
Version: 2.2
Original reporter: Michael Sweet
When I try to link the library I get these 2 errors:
Undefined symbol: ___srget
Undefined symbol: ___swbuf
I tracked the "srget" to the getc function in (mxml-file and xmldoc)??? I have not yet succeeded at tracking the swbuf external.
I am using a scaled down version of sparc unix (power tv operating system). Can you help as I would love to use your code to parse xml files.
Thank you in advance for your help on this urgent matter!
Version: 2.2.2
Original reporter: Michael Sweet
Hi Michael,
I have seen a problem when I have got an opaque value from tags without value. It return to me a buffer with severals CR values.
Example: The syntax is :
Thanks again.
Miguel Angel Diez
Version: 2.2
Original reporter: Michael Sweet
Hi, I am the author of ZynAddSubFX ( http://zynaddsubfx.sourceforge.net ).
This problem is specific only to windows (mingw-crosscompile) and 2.2 (2.1 works ok). So, today I had to revert to 2.1 to be able to use for windows version of zynaddsubfx.
I sent you in the attachement an xml generated by the folowing lines of codes (the tree exists allready in memory):
char *xmldata=mxmlSaveAllocString(tree,XMLwrapper_whitespace_callback);
(after this I save xmldata into the file).
const char *XMLwrapper_whitespace_callback(mxml_node_t *node,int where){
const char *name=node->value.element.name;
if ((where==MXML_WS_BEFORE_OPEN)&&(!strcmp(name,"?xml"))) return(NULL);
if ((where==MXML_WS_BEFORE_CLOSE)&&(!strcmp(name,"string"))) return(NULL);
if ((where==MXML_WS_BEFORE_OPEN)||(where==MXML_WS_BEFORE_CLOSE)) {
return("\n");
};
return(0);
};
Please look at the first line of the xml:
("?" before ">" is missing) Also, perhaps are other problems (because if I manually correct this problem, the xml is not loaded; but a working xml is loaded ok). Thank you. PaulVersion: 2.2.2
Original reporter: Michael Sweet
mxml_vsnprintf (local version on vsnprintf) hangs in an infinite loop when the buffer is overflowed. This has ben verified on linux/Solaris (gcc) and WIN32 (VC 6.0).
Example code is included showing the differences in behavior of vsnprintf() and mvml_vsnprintf().
BTW:
I am doing a lot of WIN32 testing (VC 4.2, 6.0, and .NET). I can provide .def and project files if you would like.
Thanks for the great software!
Cheers,
Josh
Version: 2.2
Original reporter: Michael Sweet
This is what GCC (mingw) returns:
testmxml.c: In function main': testmxml.c:481: error:
O_RDONLY' undeclared (first use in this function)
testmxml.c:481: error: (Each undeclared identifier is reported only once
testmxml.c:481: error: for each function it appears in.)
testmxml.c:501: error: O_WRONLY' undeclared (first use in this function) testmxml.c:501: error:
O_CREAT' undeclared (first use in this function)
testmxml.c:501: error: `O_TRUNC' undeclared (first use in this function)
make: *** [testmxml.o] Error 1
If I #include <fcntl.h> under the WIN32 symbol, testmxml.c compiles, but one test fails:
test.xml test.xmlfd differ: char 39, line 1
File descriptor test failed!
I don't know if it's useful, but the two mentioned files are identical.
Version: 2.2.2
Original reporter: Michael Sweet
File: testmxml.c
Line: 933
Code:
if (errno != EAGAIN && errno != EINTR)
Problem: certain Windows C compilers (e.g.: PellesC) may not know about and EINTR.
Version: 1.3
Original reporter:
I'm using 1.3 version. In my test case, If the node is
...
192.168.2.1
...
How can I obtain the value of "192.168.2.1"?
I have tried
node = mxmlFindElement(tree, tree , "ipaddr", NULL, NULL, MXML_DESCEND);
But when I use
node->value.text.string,
I always get "ipaddr" instead of "192.168.2.1"....Why?
Version: 2.1
Original reporter: Michael Sweet
The load functions should return an error when an XML document contains an element with more than one attribute of the same name, e.g.:
<element a="1" a="2"/>
is not valid XML.
Version: 2.2.2
Original reporter: Michael Sweet
By calling mxmLoadString with an mxl-string witch has an error the allocated buffers are not freed.
If parent is NULL the buffers are forever lost.
Version: 2.2.1
Original reporter: Michael Sweet
I noticed the following strange behaviour, that pertains to functions:
mxmlSaveAllocString() and mxmlSaveString().
Let's assume the following xml file:
-------test2.xml-------------------------------
1 2 3 4 4 4 4 5 4 --------------------------------------------and the following C program to process it:
-------test2.c-------------------------------
#include<stdio.h>
#include<mxml.h>
int main(void) {
FILE *fd;
fd = fopen("test2.xml", "r");
mxml_node_t * tree;
tree = mxmlLoadFile(NULL, fd, MXML_NO_CALLBACK);
mxml_node_t * node;
node = mxmlFindElement(tree, tree, "e", NULL, NULL, MXML_DESCEND);
printf("%s", mxmlSaveAllocString(node, MXML_NO_CALLBACK));
char buf[3000];
mxmlSaveString(node, buf, 3000, MXML_NO_CALLBACK);
printf("\n\n%s", buf);
return 0;
The output returned is:
-----ACTUAL-OUTPUT---------------------------
3 4 4
whereas I was expecting:
-----EXPECTED-OUTPUT---------------------------
3
Is this a bug or an undocumented feature? Or something eludes me?
Since *node points to , why the following elements are also printed?
I'm attaching a tarball with those two files.
This is just an example. This behaviour is more general, whereby it seems that these two functions convert to string all nodes until the closing tag of parent.
Stergiakis Alexandros
Version: 2.2
Original reporter: Michael Sweet
When parsing malformed XML the functions mxmlLoadString() and mxmlLoadFile() return a node that contains all the data that was in
the XML document before parse error. What should happen is that if
any of the XML document is malformed these functions should abandon the XML and return NULL instead. This will signal to the application using the API that the XML was faulty.
Version: 2.1
Original reporter:
What is the api function in order to insert the first xml line . I have tried with 'mxmlNewElement' but it show the end tag like />.
Version: 2.0
Original reporter: Michael Sweet
[request and code from Mark Koennecke]
Dear Michael Sweet,
I actually was quicker in getting MXML_CUSTOM and my NeXus-API to
work then I thought. Perhaps a sign for the quality of mxml?
Anyway, I attached a tar ball of my modified sources. I left my
Makefile, Makefile.mk and some other files in the top level
because you can use to build a test program, called nxio. I used
what I needed to do anyway for a test, so it might not be the right
thing to use as a regression test for mxml. For convenience, I took
some more local functions into mxml.h: mxml_add_char (in order to reuse
your scheme for resizable buffers), mxml_new in order to make my
custom data element.
As always there were problems with my stuff, so I took it through
valgrind in order to exclude memory problems. Thereby I found two
problems with mxml:
Please let me know if my changes will make it into maybe a 2.1 of
mxml and when this would be the case. My software stands the standard
NeXus-API selftest which makes it alpha and distributable to other
NeXus developers. So I think about making an announcement soon.
Best Regards,
Mark Koennecke
Version: 2.0rc1
Original reporter: Michael Sweet
Hello Michael,
according to your request...
Hello Michael,
I've fixed some bugs for which I've appended a small unified diff.
The diff is commented, so I'll give you just a few notes here:
attr.c:
allocation wasn't checked in one case
potentially free()ing a NULL ptr.
entity.c:
aborting if a CB couldn't be setup
file.c:
constructions like
getc() | getc() << 8
aren't save, as the compiler could eliminate the second part
under some circumstances...
output chars once instead of 1..4 times...
index.c:
removed the end-recursion for the quick-sort
string.c:
the vsnprintf() does not return the buffer size needed - instead
it returns -1 signifying that the buffer is too short...
mxmldoc.c: (and file.c):
replaces the various output functions with a printf() call only
-> saves us ~2kB
although for this part YMMV
Greetings from Germany.
CU Tom.
(Thomas M.Ott)
Version: 2.0
Original reporter: Michael Sweet
mxml-entity.c, it is unable to interpret ' and
hangs in an infinite loop in
while (last > first)
{
current = (first + last) / 2;
if ((diff = strcmp(name, entities[current].name)) == 0)
return (entities[current].val);
else if (diff < 0)
last = current;
else
first = current;
}
There is no break from this code except finding the
right answer, and since "apos" currently isnt in
the entities[]-array this loop never exits.
Version: 2.3
Original reporter: Michael Sweet
#include <stdio.h>
#include <mxml.h>
int main(int argc, char *argv[])
{
FILE *xmlfile;
mxml_node_t *tree;
if (argc != 2)
{
fprintf(stderr,"use: %s xmlfile\n",argv[0]);
exit(-1);
}
xmlfile = fopen(argv[1],"r");
if (xmlfile == NULL)
{
fprintf(stderr,"Error: Unable to open %s\n",argv[1]);
exit(-1);
}
tree = mxmlLoadFile(NULL,xmlfile,MXML_NO_CALLBACK);
fclose(xmlfile);
if (tree == NULL)
{
fprintf(stderr,"Error: Unable to load the XML data from %s\n",argv[1]);
exit(-1);
}
fprintf(stderr,"Successfully read the XML file.\n");
mxmlDelete(tree);
}
The mxml library prints an error message, but it returns a non-NULL tree. Shouldn't it return NULL?
Version: 2.2.2
Original reporter: Michael Sweet
Hi,
I am not familiar with xml spec.
But I found that in mxml_load_data()
the node is added once it is parsed.
So the mxml structure may exist the incomplete(not closed) node.
If the file is correct, the parser will find the close tag of the first node in the end.
I use the following to check the file.
It works well for me.
If it is not correct, please let me know.
mxml_load_data()
/*
* Free the string buffer - we don't need it anymore...
*/
free(buffer);
/*
* Find the top element and return it...
*/
if (parent)
{
node = parent;
while (parent->parent != top && parent->parent)
parent = parent->parent;
if (node != parent)
{
mxml_error("Mismatched close tag <%s> under parent <%s>!",
node->value.element.name, node->parent ? node->parent->value.element.name : "(nil)");
goto error;
}
}
Version: 2.1
Original reporter: Michael Sweet
The current code does not error out if the XML data stream contains control characters that are not allowed by the XML 1.0 spec. The only allowed control characters are CR, LF, and TAB; other characters from 0x00 to 0x1f and 0x7f are not allowed in XML data streams.
Version: 2.2.2
Original reporter: Michael Sweet
Hi,
I have this code:
#include <mxml.h>
#include
using namespace std;
int main()
{
FILE *archivoXML;
mxml_node_t *arbol,*nodo;
archivoXML = fopen("infEntorno.xml", "r");
arbol = mxmlLoadFile(NULL, archivoXML, MXML_TEXT_CALLBACK);
fclose(archivoXML);
printf("%s\n",arbol->value.element.name);
printf("%d",&arbol->child);
nodo=mxmlFindElement(arbol, arbol, "Entorno", NULL, NULL, MXML_DESCEND);
printf("%s\n",nodo->value.element.name);
nodo=mxmlWalkNext(nodo,arbol, MXML_DESCEND);
printf("%s\n",nodo->value.element.name);
return 0;
}
when im trying to run the program its says: segment violation
I think maybe mxmlWalkNext() is not working??? The XML file it this:
Please.. help me!! Sorry my english..
Regards
Version: 2.2.2
Original reporter: Michael Sweet
Hi Michael, I have been working with version 2.1 without problems. I have changed to 2.2.2 I have seen a problem. I have put the ?xml element in this way:
treeData = mxmlNewElement(MXML_NO_PARENT, "?xml");
mxmlElementSetAttr (treeData, "version", "1.0");
mxmlElementSetAttr (treeData, "encoding", "UTF-8");
and the document before shown . Correct buy now it shows: <?xml
version="1.0" encoding="UTF-8">
with CRLF after '<?xml'
I have been doing changes to know whit is it but I don´t know why.
Thanks
Miguel Angel Diez
Version: 2.1
Original reporter:
Hi,
I am trying to insert a element with <![CDATA[text}}>. First, I write it like a TEXT into elemente but MiniXml translate <> symbols for < and >. It doesn´t show errors but I think that the parser take it like normal text and not like it must be.
After I have tried to inert it like NewElement but it says me that doesn´t find the last tag for it.
How can I do it?
Thanks
Version: 2.0
Original reporter: Michael Sweet
mxmlSetText() returns -1, does not update node, when trying to replace the contents of a text entity initialized by mxmlNewText().
I am trying to replace the contents of a particular xml entity that has been built into the XML document prior to my logic. I can properly locate the entity in question, but cannot alter it's content. mxmlSetText() seems to be the function I should use to replace the contents of an entity, but it always returns -1 to the call.
Sample program (mxmltest2.c) illustrates problem.
On my system, the binary results in
~/code/xml1 $ mxmltest2
Error: mxmlSetText() failed (-1)
Generated XML:
abcdefg
~/code/xml1 $
mxmltest2.c compiled with commandline
cc -o mxmltest2 mxmltest2.c -lmxml
Version: 2.2.2
Original reporter: Michael Sweet
it would be very useful to be able to "compose" the attribute value in situ, using printf syntax, as it's possible for text elements.
Version: 2.2.2
Original reporter: Michael Sweet
Hi,
I have Text like this in my XML-File "Test&Measurement"
so when I try to open the file with mxmlLoadFile(NULL,fp,MXML_OPAQUE_CALLBACK);
there is error reported
mxml: Character entity "F" not terminated under parent <MAT_TEXT>!
Actually I was thinking when I open a file with MXML_OPAQUE_CALLBACK
, the text should be treated as "CDATA"
Dit I make a mistake or it's bug ?
Thanks a lot, Dave
Version: 2.2.2
Original reporter: Michael Sweet
I have install the new MS compiler, and I was testing your library. It works as well as ever, but in compile time, it give a lot of warnings:
MS has deprecated the strdup, strncpy, sprintf, strcpy, strerror, read, and write functions.
using the preprocessor definition _CRT_SECURE_NO_DEPRECATE most of warnings disappears (Only lefts strdup).
Using the directive #pragma warning(disable : 4996) all the warnings disappear
I think it´s not importatn (It works well anyway), but I supose you would like to know it.
Thanks for your work
Version: 2.2.2
Original reporter: Michael Sweet
Hi Michael,
I am using version 2.2.2, compiled with gcc 4.0.2.
I am using Ubuntu (Breezy), but I am not using the
the Ubuntu package.
Notice that there is a missing closing > in the second line.
My call to mxmlLoadFile returns successfully when called with
this file.
When I give this file to xmllint, it reports an error.
#include <stdio.h>
#include <mxml.h>
int main(int argc, char *argv[])
{
FILE *xmlfile;
mxml_node_t *tree;
if (argc != 2)
{
fprintf(stderr,"use: %s xmlfile\n",argv[0]);
exit(-1);
}
xmlfile = fopen(argv[1],"r");
if (xmlfile == NULL)
{
fprintf(stderr,"Error: Unable to open %s\n",argv[1]);
exit(-1);
}
tree = mxmlLoadFile(NULL,xmlfile,MXML_NO_CALLBACK);
fclose(xmlfile);
if (tree == NULL)
{
fprintf(stderr,"Error: Unable to load the XML data from %s\n",argv[1]);
exit(-1);
}
fprintf(stderr,"Successfully read the XML file.\n");
mxmlDelete(tree);
}
This program reports success when given the short XML file shown above.
--Warren
P.S. I don't know what select for "Priority" or "Scope". Perhaps
the bug report form should allow "Unknown" for these.
Version: 2.2.2
Original reporter: Michael Sweet
My XML format is a bunch of nest attribute tags, each with only one data value node. Something like:
Eric 5 3 5etc.
This got printed out as one very long line, thousands of characters long. It would be nice if there was a way to tell it to "print a carriage return after this element's value", or something like that. (Without creating a \n text node, which is the workaround.) Or maybe some other way of addressing this issue, so that it isn't so surprising.
Version: 2.1
Original reporter:
I would like to know if Mini XML supports ISO 8859. I have loaded a XML document with this encoding and I have problems with the library.
Thanks.
Version: 2.0
Original reporter: Michael Sweet
I found a function in the file mxml-file.c called mxml_get_entity.
This has a few lines that read as follows;
if (entity[1] == '#')
{
if (entity[2] == 'x')
ch = strtol(entity + 3, NULL, 16);
else
ch = strtol(entity + 2, NULL, 10);
}
It seems the index into "entity" is actually off by one. I changed the
code to read as follows;
if (entity[0] == '#')
{
if ((entity[1] == 'x') || (entity[1] == 'X'))
ch = strtol(entity + 2, NULL, 16);
else
ch = strtol(entity + 1, NULL, 10);
}
Basically, decremented the index into "entity" by one since I found the
quick check for an uppercase "X".
Version: 2.1
Original reporter:
How can I insert DOCTYPE element in XML file. Example:
Thanks
Version: 2.2.2
Original reporter:
Hi Micheal,
This might sound stupid but what is the correct way to return the "top" node for methods such as mxmlWalkNext() etc.
Sid
Version: 2.2.2
Original reporter: Michael Sweet
Michael,
I want to ask you if I can use some files from your library in my Perl module Win32::File::Summary (http://search.cpan.org/~rpagitsch/Win32-File-Summary-0.05/)
The copyright informations from you will be unchanged. But I only want to add the following files to my module:
mxml.h
mxml-attr.c
mxml-entity.c
mxml-file.c
mxml-index.c
mxml-node.c
mxml-private.c
mxml-search.c
mxml-set.c
mxml-string.c
I will also add the following inforamtion regarding Mini-XML to the POD documentation:
=head1 TECHNICAL INFORAMTION
The module Win32::File::Summary uses zlib1.1.4 from Mark Adler and
Jean-loup Gailly and the unzip 1.01 from
http://www.winimage.com/zLibDll/unzip.htm
Thank you to Mark Adler, Jean-loup Gailly and all other which are
makeing the libraries available to the public.
There is no need to download the libraries above I allready added the
neccessary parts to the module.
It also uses the Mini-XML library version 2.2.2 from Michael Sweet.
The whole library can be found under
http://www.easysw.com/~mike/mxml/.
I also want to give him my special thank you.
Is this allowed from your site?
If you have additional requirements please let me know.
Thank you
Reinhard
Version: 2.0
Original reporter: Michael Sweet
There are some bugs in mxml_string_getc: *s[n] is interpreted as *(s[n]) instead of (*s)[n], making mxmlLoadString unreliable when processing non ascii data.
Here is a fixed version.
Version: 2.2.2
Original reporter: Michael Sweet
#include <mxml.h>
int main (void)
{
mxml_node_t *tree;
tree = mxmlLoadString(NULL, "</", MXML_NO_CALLBACK);
return 1;
};
Version: 2.2
Original reporter: Michael Sweet
Hi Michael.
I am saving the XML document with mxmlNewElement function (for tags) and mxmlNewText function (for text). The text has several words with white spaces. It is saved OK but when I´m going to load the document, it fragments the text in several nodes. How can I to load the full text without this separation?.
Thanks.
Miguel Angel Diez.
Version: 2.3
Original reporter: Michael Sweet
I was unable to build the library after i upgraded the vs solution to vs2005 (SP1 + Vista upgrade on Vista)
After some editing in the files i got it working. Here is the list of changes:
Version: 2.2.2
Original reporter:
Hi,
When linking the files into a C++ console app using vs2003 I get wierd multiply defined symbol errors.
Have read doco and cannot find specific mention of this issue.. what am I dong wrong ?
Sid
Compiling...
MXM_Test1.cpp
Linking...
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _malloc already defined in LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _putc already defined in LIBCD.lib(fputc.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _getc already defined in LIBCD.lib(fgetc.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _fwrite already defined in LIBCD.lib(fwrite.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _free already defined in LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _strncmp already defined in LIBCD.lib(strncmp.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _realloc already defined in LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _sprintf already defined in LIBCD.lib(sprintf.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _calloc already defined in LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _memmove already defined in LIBCD.lib(memmove.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _strncpy already defined in LIBCD.lib(strncpy.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: _strchr already defined in LIBCD.lib(strchr.obj)
MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@aae@ABV0@@z) already defined in LIBCD.lib(typinfo.obj)
MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@z) already defined in LIBCD.lib(typinfo.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: __read already defined in LIBCD.lib(read.obj)
MSVCRTD.lib(MSVCR71D.dll) : error LNK2005: __write already defined in LIBCD.lib(write.obj)
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
Debug/MXM_Test1.exe : fatal error LNK1169: one or more multiply defined symbols found
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.