1 // Copyright 2020 The Bazel Authors. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 extern crate libc;
16
17 extern "C" {
return_zero() -> libc::c_int18 pub fn return_zero() -> libc::c_int;
19 }
20
main()21 fn main() {
22 let zero = unsafe { return_zero() };
23 println!("Got {zero} from our shared lib");
24 }
25
26 #[cfg(test)]
27 mod test {
28 extern "C" {
return_zero() -> libc::c_int29 pub fn return_zero() -> libc::c_int;
30 }
31
32 #[test]
test_return_zero()33 fn test_return_zero() {
34 assert_eq!(0, unsafe { return_zero() });
35 // If we make it past this call, it linked correctly, so the test passes.
36 }
37 }
38