17
17
18
18
package org .photonvision .jni ;
19
19
20
- import java .io .IOException ;
21
-
22
- import org .opencv .core .Core ;
23
-
24
20
import edu .wpi .first .apriltag .jni .AprilTagJNI ;
25
21
import edu .wpi .first .cscore .CameraServerJNI ;
26
22
import edu .wpi .first .cscore .OpenCvLoader ;
30
26
import edu .wpi .first .networktables .NetworkTablesJNI ;
31
27
import edu .wpi .first .util .CombinedRuntimeLoader ;
32
28
import edu .wpi .first .util .WPIUtilJNI ;
29
+ import java .io .IOException ;
30
+ import org .opencv .core .Core ;
33
31
34
32
public class WpilibLoader {
35
33
private static boolean has_loaded = false ;
34
+
36
35
public static boolean loadLibraries () {
37
36
if (has_loaded ) return true ;
38
37
@@ -45,9 +44,11 @@ public static boolean loadLibraries() {
45
44
WPIMathJNI .Helper .setExtractOnStaticLoad (false );
46
45
AprilTagJNI .Helper .setExtractOnStaticLoad (false );
47
46
try {
47
+ // Need to load wpiutil first before checking if the MSVC runtime is valid
48
+ CombinedRuntimeLoader .loadLibraries (WpilibLoader .class , "wpiutiljni" );
49
+ WPIUtilJNI .checkMsvcRuntime ();
48
50
CombinedRuntimeLoader .loadLibraries (
49
51
WpilibLoader .class ,
50
- "wpiutiljni" ,
51
52
"wpimathjni" ,
52
53
"ntcorejni" ,
53
54
"wpinetjni" ,
@@ -56,7 +57,6 @@ public static boolean loadLibraries() {
56
57
"apriltagjni" );
57
58
58
59
CombinedRuntimeLoader .loadLibraries (WpilibLoader .class , Core .NATIVE_LIBRARY_NAME );
59
-
60
60
has_loaded = true ;
61
61
} catch (IOException e ) {
62
62
e .printStackTrace ();
0 commit comments