-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvxl-users-faq.html
110 lines (87 loc) · 5.2 KB
/
vxl-users-faq.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>vxl-users FAQ</title>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<style type="text/css">
body { color: black ; background-color: white }
p.question { font-style: oblique ; font-weight: bold }
p.answer { color: green }
</style>
</head>
<body>
<h1><a href="https://vxl.github.io/"><img alt="VXL" src="logo1-quant.gif" border="0" width="128" height="48"></a>-users Frequently Asked Questions</h1>
<hr>
<ol>
<li>
<p class="question">I have successfully built VXL under MS Visual Studio, and am now trying to build a simple
program that uses the libraries. The Linker complains that there are multiple definitions (error
<code>LNK2005</code>)
of several things from the C++ Standard Library. What is going wrong?</p>
<p class="answer">These kinds of errors often indicate that you are linking against different C++ run-time libraries that you
compiled VXL with (release vs debug, static vs DLL stdlib, etc). The flags like
<code>/MP</code> and <code>/MD</code> much match exactly,
in VXL's build and your program's build. These flags are set in Visual Studio under
Settings->C/C++->Code Generation->Use run-time library.
<br>
The easiest way to link against these projects, we've found, is to use CMake for your project too.
CMake will then make sure the flags match, or else will give you an error or warning.</p>
<hr>
</li>
<li>
<p class="question">I followed the VXL installation documentation, but
found that the configuration output and/or entries in the
<code>CMakeCache.txt</code> file say that CMake could not find programs,
paths, etc. Is this a problem?</p>
<p class="answer">No. VXL needs very little to build correctly (only a
C/C++ compiler at worst), however it can make use of various system
provided libraries, rather than build its own versions. CMake also looks
for lots of system tools so that it can understand the environment it is
in. So having lots of <code>NOTFOUND</code> entries, or "<code>Could NOT
find</code>" reports is quite normal. There is no need to worry unless
CMake displays a warning or error message while it runs.</p>
<hr>
</li>
<li>
<p class="question">I used CMake to create a MSVC project with <code>BUILD_SHARED_LIBRARY=ON</code>. But when I try to build, it gives message
"<code>cannot open
vcl.lib</code>". What's wrong?</p>
<p class="answer">VXL does not support the CMake "Shared Library" feature on MSVC. You have to use static libraries. This is mostly
due to MSVC's requirements to have either a complete list of every exportable identifier or a decoration of every
identifier in the code. We are too lazy (or appalled at this "feature") to try to fix this. If you absolutely need
DLLs you can build your code using Cygwin, which can produce shared libraries in a "normal" manner. Alternatively, if you only want to export a small
number of classes or functions, then you can manually list them. See the MSVC tool documentation for further
details.</p>
<hr>
</li>
<li>
<p class="question">I have successfully built VXL, but when I try to write my own program to use it,
I get errors like "<code>include file not found</code>",
or "<code>unresolved symbol</code>" , or "<code>unresolved external symbol</code>".
What's wrong?</p>
<p class="answer">Your makefile or IDE settings have not been correctly set up to include VXL .h files, or link
against VXL or system libraries. Details can be found in the "Build Systems" appendix of the
<a href="https://vxl.github.io/doc/release/books/core/book.html">VXL Book</a>. If you
still have problems, show the appendix to a competent local programmer, and ask for their advice.</p>
<hr>
</li>
<li>
<p class="question">I'm trying to compile the whole of VXL and I get compiler or linker errors in $VXL_SRC/XXX/YYY mentioning library ZZZ</p>
<p class="answer">In many cases the code in question will be trying to use a system provided library ZZZ.
You can tell VXL to not use that library by looking in your CMakeCache.txt file for references to ZZZ
(e.g. <code>ZZZ_LIBRARY</code> or <code>ZZZ_INCLUDE_PATH</code>) and setting them to <code>IGNORE</code>.
Alternative you can disable the building of some parts of VXL (e.g. all of YYY) by looking in your
CMakeCache.txt file for references to <code>BUILD_YYY</code>, and setting them to <code>OFF</code>.</p>
<hr>
</li>
<li>
<p class="question">No-one has answered my question on vxl-users. It is really important that I get an answer.</p>
<p class="answer">Your questions may be very poorly posed, and none of the other members of vxl-users, can answer it.
If you still haven't had a reply after a week, please read the <a href="vxl-users-policy.html">vxl-users list policy</a>,
and repost your email after taking account of the advice in the policy.</p>
<hr>
</li>
</ol>
<hr>
</body>
</html>