Remove deprecated (and now removed) --no-site-packages flag when creating a venv

On more modern versions of virtualenv, the long-deprecated --no-site-packages flag has finally been removed, so make reqs errors out:
$ make reqs
test -d .venv || virtualenv -p /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 --no-site-packages .venv
usage: virtualenv [--version] [--with-traceback] [-v | -q] [--discovery {builtin}] [-p py] [--creator {builtin,cpython3-posix,venv}] [--seeder {app-data,pip}] [--no-seed] [--activators comma_separated_list] [--clear]
                  [--system-site-packages] [--symlinks | --copies] [--download | --no-download] [--extra-search-dir d [d ...]] [--pip version] [--setuptools version] [--wheel version] [--no-pip] [--no-setuptools] [--no-wheel]
                  [--clear-app-data] [--symlink-app-data] [--prompt prompt] [-h]
                  dest
virtualenv: error: unrecognized arguments: --no-site-packages
make: *** [venv] Error 2

This PR simply removes that flag, and make reqs now passes:
$ make reqs
test -d .venv || virtualenv -p /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 .venv
created virtual environment in 354ms CPython3Posix(dest=...orquesta/.venv, clear=False, global=False) with seeder FromAppData pip=latest setuptools=latest wheel=latest app_data_dir=.../virtualenv/seed-v1 via=copy
.venv/bin/pip install --upgrade "pip>=19.0,<20.0"
Collecting pip<20.0,>=19.0
  Using cached pip-19.3.1-py2.py3-none-any.whl (1.4 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.0.2
    Uninstalling pip-20.0.2:
      Successfully uninstalled pip-20.0.2
Successfully installed pip-19.3.1
.venv/bin/pip install -r requirements.txt
# .
# . (a lot of output)
#.
Finished processing dependencies for orquesta==1.1.1
echo

Codecov Report

Merging #204 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #204   +/-   ##
=======================================
  Coverage   94.04%   94.04%
=======================================
  Files          41       41
  Lines        2735     2735
  Branches      545      545
=======================================
  Hits         2572     2572
  Misses        100      100
  Partials       63       63

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 91e8529...b266c56. Read the comment docs.


Download finished before stream ended

i'm on this commit https://github.com/Kethsar/ytarchive/commit/5f9a5f594742394e54dd33172a6f674f4a10280b
it usually keeps retrying i don't know what happend this time
02:40:19 DEBUG: video1: Error with fragment 2345: The read operation timed out
02:40:21 DEBUG: audio0: Error with fragment 2345: The read operation timed out
02:40:22 DEBUG: video1: Error with fragment 2345: The read operation timed out
02:40:24 DEBUG: audio0: Error with fragment 2345: The read operation timed out
02:40:25 DEBUG: video1: Error with fragment 2345: The read operation timed out
02:40:28 DEBUG: audio0: Error with fragment 2345: The read operation timed out
02:40:28 DEBUG: video1: Error with fragment 2345: The read operation timed out
02:40:31 DEBUG: audio0: Error with fragment 2345: The read operation timed out
02:40:31 DEBUG: video1: Error with fragment 2345: The read operation timed out
02:40:34 DEBUG: audio0: Error with fragment 2345: The read operation timed out
02:40:34 DEBUG: video1: Error with fragment 2345: The read operation timed out
02:40:37 DEBUG: audio0: Error with fragment 2345: The read operation timed out
02:40:37 DEBUG: video1: Error with fragment 2345: The read operation timed out
02:40:40 DEBUG: audio0: Error with fragment 2345: The read operation timed out
02:40:40 DEBUG: audio0: Fragment 2345: 10/10 retries
02:40:40 DEBUG: Livestream status is LIVE_STREAM_OFFLINE mid-download
02:40:40 DEBUG: audio0: exiting
02:40:40 DEBUG: audio-download thread closing
02:40:40 DEBUG: video1: Error with fragment 2345: The read operation timed out
02:40:40 DEBUG: video1: Stream has ended and fragment number is within two of the known max, probably not actually created
02:40:40 DEBUG: video1: exiting
02:40:40 DEBUG: video-download thread closing
Video fragments: 2345; Audio fragments: 2345; Max sequence: 2344; Total Downloaded: 1.29GiB
Download finished

edit: this is the error i got when i started the script while its offline maybe it helps
Traceback (most recent call last):
  File "/home/lytexx/ytarchive.py", line 2236, in <module>
    main()
  File "/home/lytexx/ytarchive.py", line 1973, in main
    if not info.gvideo_ddl and not get_video_info(info):
  File "/home/lytexx/ytarchive.py", line 851, in get_video_info
    vals = get_playable_player_response(info)
  File "/home/lytexx/ytarchive.py", line 703, in get_playable_player_response
    sched_time = int(playability["liveStreamability"]["liveStreamabilityRenderer"]["offlineSlate"][
KeyError: 'scheduledStartTime'

Looks like I should probably change what I return from a function. I'll get to it after work today probably, in around 17-18 hours.


Ignore Axis line for AutoScale

Question: Is it possible to have horizontal axis line ignored by AutoScaleY ?
ScottPlot Version: 5.0.36
Version 4 provides a flag that allows the drawing of an horizontal axis line to be ignored by autoscale:
            var hline = WP.Plot.AddHorizontalLine(0, color: System.Drawing.Color.DimGray, width: 1, style: LineStyle.Solid);
            hline.IgnoreAxisAuto = true;
            WP.Plot.AxisAutoY();

V5 documentation does not mention anything like that for HorizontalLine. I checked the API and couldn't find anything obvious.
PS: performance improvement on V5 is amazing

@andresod in fact, the functionality is for now not available in ScottPlot 5.
I have create a pull request to port the functionality from ScottPlot 4.1 to 5.0.
Maybe it would be available on next release 🚀


Update examples to use [TSIntro]

I've updated DocumentLanguage.hs (as of 41956a3a09d61f09a6249465080e7d27f0f3ea4c) to include the changes we discussed in the all-hands meeting. If your example uses RefSec you'll need to change the intro for the table of symbols from a section (example: s1_2_intro) to a list of TSIntro items (example: [Purpose, SymbConvention [Lit heat_transfer, Doc swhs], SymbOrder])

I have fixed SSP as of 659833af603fbc6df7bb546b86722f2ab66df1c6

Fixed SWHS as of 8c7c331

Fixed Gamephys as of f89d366

Fixed PCM as of 559930d.

Fixed as of bbc31a386973016842c78a5e48a471aed84d7da9

Fixed GlassBR as of d6ee3e9.


null is not an object (evaluating 'ReactNativeFlurry.initBuilder') while using Expo

Describe the bug
Basically running into this bug when trying to init Flurry in my Expo project. Being that Expo's entry point is essentially App.js I call this method towards the bottom of my file before exporting. Can this package be used with Expo? I've been searching all over and haven't found instructions to use it in unison with it.
This Bug is About

[x] Integration
[ ] Analytics
[ ] Messaging/Push
[ ] Remote Configuration
[ ] Flurry Website/Dashboard
[ ] Other

Environment

React Native version: 0.63.2
react-native-flurry-sdk version: 6.2.0

To Reproduce

Happens on build: expo start

App.js
// ...

import Flurry from 'react-native-flurry-sdk';

// ...

new Flurry.Builder()
  .withCrashReporting(true)
  .withLogEnabled(true)
  .withLogLevel(Flurry.LogLevel.DEBUG)
  .build('ANDROID_API_KEY', 'IOS_API_KEY');

export default () => (
  <Provider store={ store }>
     <PersistGate
       loading={ null }
       persistor={ persistor }
      >
      <AppContainer/>
    </PersistGate>
  </Provider>
);

Screenshots

@cbanksbi Currently Expo is not supported by our Flurry plugin, and is not tested. We will look into this support.
If you have any suggestion and recommended fix, please also provide it so we can integrate with. Thanks!

@cbanksbi Currently Expo is not supported by our Flurry plugin, and is not tested. We will look into this support.
If you have any suggestion and recommended fix, please also provide it so we can integrate with. Thanks!

@cbanksbi did you manage to find a solution? We have the same issue on our app and did't find a fix yet.

@cbanksbi @robertpreoteasa
Expo does NOT support or manage custom native libraries except their own build-in. I.e., Flurry plugin is a native library that invokes the native Android/iOS modules, and Expo does not support these kinds of native libraries.
You will need to "eject" Expo if you need to extend your apps to use the native libraries.
You can find more info here,

https://reactnative.dev/docs/environment-setup
Caveats
Because you don't build any native code when using Expo to create a project, it's not possible to include custom native modules beyond the React Native APIs and components that are available in the Expo client app.
https://docs.expo.io/introduction/why-not-expo/
Native libraries to integrate with proprietary services are usually not included in the SDK
Related to the previous point, we typically avoid adding native modules to the SDK if they are tied to external, proprietary services — we can't add something to the SDK just because a few users need it for their app, we have to think of the broader userbase. In these cases developers will want to use the bare workflow, and they can easily migrate to it by ejecting.
https://docs.expo.io/introduction/managed-vs-bare/
Workflow comparison
Add custom native code and manage native dependencies => Bare workflow


[Concurrency] Remove asyncHandler attribute.

The asyncHandler attribute turned out to be the wrong solution
to the problem of creating a sync->async bridge. Remove it.

@swift-ci please smoke test and merge

Would be <3 to have added references to details/discussions on these types of changes for those of us trying to understand the language / research the process.


Not being able to use OpenMP

Xmake Version
2.6.9
Operating System Version and Architecture
Linux artix 5.18.14-artix1-1 x86_64 GNU/Linux
Describe Bug
Testing with the simple example loop using gcc seems to work fine.
openmp_test via 🌙 v5.4.4
❯ g++ src/main.cpp -fopenmp; ./a.out
hello(4): i = 6
hello(1): i = 2
hello(1): i = 3
hello(0): i = 0
hello(0): i = 1
hello(7): i = 9
hello(2): i = 4
hello(6): i = 8
hello(3): i = 5
hello(5): i = 7

Yet still with xmake the result is not the same.
openmp via 🌙 v5.4.4
❯ xmake && xmake run
[100%]: build ok!
hello(0): i = 0
hello(0): i = 1
hello(0): i = 2
hello(0): i = 3
hello(0): i = 4
hello(0): i = 5
hello(0): i = 6
hello(0): i = 7
hello(0): i = 8
hello(0): i = 9

Expected Behavior
To work similarly as the gcc.
Project Configuration
add_requires("openmp")
target("loop")
    set_kind("binary")
    add_files("src/*.cpp")
    add_packages("openmp")

Additional Information and Error Logs
openmp via 🌙 v5.4.4
❯ xmake -vD

build cache stats:
cache directory: build/.build_cache
cache hit rate: 0%
cache hit: 0
cache miss: 0
new cached files: 0
remote cache hit: 0
remote new cached files: 0
preprocess failed: 0
compile fallback count: 0

[100%]: build ok!

try dev. https://github.com/xmake-io/xmake/issues/2603
xmake update dev

Thank you, this alongside with
set_policy("preprocessor.gcc.directives_only", false)

did the job. Once again thank you for the fast replies, and sorry for the duplicate.


Add possibility to set SSL keystore/truststore type

Is your feature request related to a problem? Please describe.
I'm missing the possibility to set key/trust store type. Currently only the platform default can be used.
Describe the solution you'd like
Extend org.springframework.cloud.vault.config.VaultProperties.Ssl with:
keyStoreType
trustStoreType

(and handle in org.springframework.cloud.vault.config.VaultConfigurationUtil)

That's a duplicate of #387.


Right clicking a project and choosing "Build and Profile" fails for our projects

Hello,
Right clicking a project and choosing "Build and Profile fails".

This is likely because our .vcxproj files are modified to import our own .targets XML files in a bigger scheme that allows us to factor out build settings for the ~100 projects in our .sln.
Will try to come up with a repro.

Interesting. Strange that the Build and Profile is not behaving the same way as Build Project.
If you could provide me with a simple failing test project I would really appreciate it.

I think the mentioned PR might have fixed this issue. In case it did not, there is also the option to manually trigger a 'Start Trace' and 'Stop Trace' in the extension menus ( mappable to key bindings or custom toolbar buttons )


No Serial Port Setup in updated firmware.

I am trying to setup S. Port Frsky Telemetry to Serial 4/5 and the documentation is very clear here:
https://docs.px4.io/en/peripherals/serial_configuration.html
BUT on updated firmware I do not see any options to adjust Serial ports.  I need telem 2 for my companion computer and would like to use Serial 4/5 for the Frsky Telem.
Where is the following in updated firmware?
Configuration parameter names follow the pattern *_CONFIG or *_CFG (QGroundControl only displays the parameters for services/drivers that are present in firmware). At time of writing the current set is: GPS_1_CONFIG, GPS_2_CONFIG, ISBD_CONFIG, MAV_0_CONFIG, MAV_1_CONFIG, MAV_2_CONFIG, RTPS_CONFIG, RTPS_MAV_CONFIG, TEL_FRSKY_CONFIG, TEL_HOTT_CONFIG, SENS_LEDDAR1_CFG, SENS_SF0X_CFG, SENS_TFMINI_CFG, SENS_ULAND_CFG.
Select the Serial tab <- I do not see any options here at all for adjusting Serial 4/5 to FrSky

Which version of PX4 and QGC? At the moment you'll need to be on the development version of PX4 (that's soon going to be stable v1.9.0).

Much appreciation for the super fast response @dagar. I am on stable (1.8.2 I believe).  So I should flash development branch to see these options?
As for QGroundControl I just updated to the most current APP image on my linux laptop and also updated android to current.

Okay so I need https://github.com/PX4/Firmware/releases/tag/v1.9.0-beta1

Yes you'd need to flash newer PX4 (development or beta) through QGC (to get the updated metadata), then restart QGC. If you still don't see it when QGC is "stuck" on the old metadata that might need to be cleared first.

Perfect thank you so much for the assistance.  I will report back results when I get time to flash tonight.

Okay I can see the options now on 1.9.0 beta but I have another issue.  When I adjust SYS_COMPANION or any other serial setting save and reboot no settings save but sensors calibration went find and saved.  Very odd.  I'll flash back to stable until this is sorted out.  Any pointers would be great @dagar  😃

@mattgorski I don't understand exactly what you are saying above, but if you're using 1.9.0 you'd use the new serial params instead of SYS_COMPANION.
If you want to use 1.8.2 the old instructions were here: https://github.com/PX4/px4_user_guide/blob/f18662cacd2cdd0b3a49699781766894a71ca77b/en/peripherals/frsky_telemetry.md#px4-configuration

Ohh okay so don't use SYS_COMPANION for companion computer link and use just GPS/Serial settings for setting telem2 over a specific port.  So basically I can set Telem 2 to Frsky Telemetry and then also set GPS_2 to Telem 2 for the companion link correct?

Alright so on developer 1.9.0 I now can get Telem 2 (COMPANION LINK BAUD 921600) over telem 2 in serial but now how can I set GPS_2 serial 4/5 to frsky s. port protocol/telem 2?

Okay so now i found TEL_FRSKY_CONFIG and i have tried GPS_2 TELEM/SERIAL 4 and also setting serial GPS_2 to GPS_2 and TELEM/SERIAL 4 and no go.  I bought the cable from craft in theory
http://www.craftandtheoryllc.com/store/ct-telemetry-cable-for-frsky-radios/

@mattgorski So just to confirm,

you're using master branch and TEL_FRSKY_CONFIG to configure the port on which FrSky runs?
you have tried both selecting (and connecting to) ports GPS_2 and TELEM/SERIAL 4, but in neither case things work? YOu also rebooted after making the settings?

Okay so now i found TEL_FRSKY_CONFIG and i have tried GPS_2 TELEM/SERIAL 4 and also setting serial GPS_2 to GPS_2 and TELEM/SERIAL 4 and no go. I bought the cable from craft and theory
http://www.craftandtheoryllc.com/store/ct-telemetry-cable-for-frsky-radios/

If you are using Pixracer, Set to Disabled and disconnect the USB, then it will work.

Thanks for the reply.  I am actually using Holybro Pixhawk pix32 from
getfpv.  Any assistance helps.
Set what to disabled? TEL_FRSKY_CONFIG? then reconnect?
On Tue, Apr 16, 2019 at 6:13 AM Yue<EMAIL_ADDRESS>wrote:

Okay so now i found TEL_FRSKY_CONFIG and i have tried GPS_2 TELEM/SERIAL 4
and also setting serial GPS_2 to GPS_2 and TELEM/SERIAL 4 and no go. I
bought the cable from craft and theory
http://www.craftandtheoryllc.com/store/ct-telemetry-cable-for-frsky-radios/
If you are using Pixracer, Set to Disabled and disconnect the USB, then it
will work.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/PX4/Firmware/issues/11687#issuecomment-483598750, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA9NQST-HyD0S7AirV3pTprws_KKXRchks5vhaJDgaJpZM4b_Wy1
.

@mattgorski Only Pixracer should set TEL_FRSKY_CONFIG to disable. It has a FRS port for telemetry, so no need to set TEL_FRSKY_CONFIG. Maybe cable issue?

@skymaze has this been resolved?

Closing until we get an answer.


hasBeenCalledWith array

Hello,
I've got some job ready for you
Opened this issue due to a bug when hasBeenCalledWith method has been called with valid parameters
You can find a test here

Soon fixed in v1, and you'll also be able to use zod for more powerful matching of any parameters !


Print to scale example is broken

Describe the bug
The Print to scale example is broken
To Reproduce
Steps to reproduce the behavior:

Go to 'https://openlayers.org/en/latest/examples/print-to-scale.html'
Click on 'Export PDF'
See error in console : Uncaught ReferenceError: html2canvas is not defined

Expected behavior
The pdf page should be printed

Works for me. Maybe it was a temporary outage of https://html2canvas.hertzen.com/dist/html2canvas.min.js?

My bad, noscript was on for hertzen.com 🤦♂


Only allow 'unique' and 'well-known' symbols

Made a start on what the spec text changes could be if registered and well-known symbols were not allowed in WeakMap, WeakSet, WeakRef and FinalizationRegistry
Closes #21

It is my understanding that for forward web compatibility we would prefer to actually name the exposed predicate something like isUnforgeable.

Thanks @rricard - good point that this was still being discussed. I've created an issue https://github.com/tc39/proposal-symbols-as-weakmap-keys/issues/24

Based on the most recently conversations in the Record & Tuple monthly call - I have updated the PR:

removed the previously included static predicates (e.g. WeakMap.isValidKey)
widened the CanBeHeldWeakly AO to also return true for well-known symbols by only returning false for symbols that are registered.

also return true for well-known symbols by only returning false for symbols that are registered.

@acutmore I’d thought about this (way too much) and came to the same conclusion, but wasn’t confident about my ability to articulate the case coherently. It’s really cool to see that this is where you’ve landed!


aot: Give preference to local build shim

This helps with development such that we don't need to mess with $PATH
when running --aot commands. Now we can just run it like a prod
invocation and it will "just work".
Checklist

[ ] Language changes are updated in man/adoc/bpftrace.adoc
[ ] User-visible and non-trivial changes updated in CHANGELOG.md
[ ] The new behaviour is covered by tests

cc @arthurshau

LGTM!


solutions to 800 rated problems on codeforces. merge my pr

solutions to 800 rated problems on codeforces.

You make my library prosperous with solutions 😂🤣


bbox mAP stays very low at end of each epoch when training on custom COCO-format dataset

I am training an object detection model using the cascade_rcnn_x101_64x4d_fpn_20e_coco.py config file on a custom COCO formatted dataset. I have 20 classes and have changed the corresponding config file lines. Outputs from the log files are as follows and there seem to be a mismatch between the loss during training and the evaluation on bbox mAP at end of each epoch:
2020-09-05 08:56:35,767 - mmdet - INFO - Epoch [20][4300/4395]	lr: 0.00003, eta: 0:01:04, time: 0.685, data_time: 0.005, memory: 6717, loss_rpn_cls: 0.0007, loss_rpn_bbox: 0.0008, s0.loss_cls: 0.0152, s0.acc: 99.4355, s0.loss_bbox: 0.0039, s1.loss_cls: 0.0073, s1.acc: 99.4718, s1.loss_bbox: 0.0057, s2.loss_cls: 0.0046, s2.acc: 99.3902, s2.loss_bbox: 0.0064, loss: 0.0444 2020-09-05 08:57:09,980 - mmdet - INFO - Epoch [20][4350/4395]	lr: 0.00003, eta: 0:00:30, time: 0.684, data_time: 0.005, memory: 6717, loss_rpn_cls: 0.0006, loss_rpn_bbox: 0.0008, s0.loss_cls: 0.0140, s0.acc: 99.4707, s0.loss_bbox: 0.0040, s1.loss_cls: 0.0056, s1.acc: 99.5386, s1.loss_bbox: 0.0052, s2.loss_cls: 0.0028, s2.acc: 99.5430, s2.loss_bbox: 0.0058, loss: 0.0389 [>>>>>>>>>>>>>>>>>>>>>>>>>>] 1549/1549, 10.8 task/s, elapsed: 143s, ETA:     0s2020-09-05 09:00:05,316 - mmdet - INFO - Evaluating bbox... Loading and preparing results... DONE (t=0.02s) creating index... index created! Running per image evaluation... Evaluate annotation type *bbox* DONE (t=1.31s). Accumulating evaluation results... DONE (t=0.34s). Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.090 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.100 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.099 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.000 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.090 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.093 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.095 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.095 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.000 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.095 2020-09-05 09:00:07,039 - mmdet - INFO - Epoch [20][4395/4395]	lr: 0.00003, bbox_mAP: 0.0900, bbox_mAP_50: 0.1000, bbox_mAP_75: 0.0990, bbox_mAP_s: 0.0000, bbox_mAP_m: 0.0000, bbox_mAP_l: 0.0900, bbox_mAP_copypaste: 0.090 0.100 0.099 0.000 0.000 0.090
My dataset annotations have the following format:
[{'id': 652, 'image_id':<PHONE_NUMBER>, 'category_id': 10, 'segmentation': [], 'iscrowd': 0, 'area': 662606, 'bbox': [60, 198, 893, 742]}]
Is it possible that the bbox evaluation is done using the segmentation field that is empty (Referring to #3434) or could it be some other reasons?

Hi @mcdy143
You may check if your annotation file is correct. Here is an example.

Thanks for the quick response @xvjiarui . What should resFile be in this case? I was able to visualize the annotations correctly using pycocotools.

I have meet a similar issue in evaluation of distributed training models and dist_test.sh as well.
I guess there is a bug in collecting results which leads keys and results misaligned, since when I use a single GPU everything is fine.

Thanks for the insights @lliuz . I am using a single-gpu machine so it might be a different issue. Upon running inference using the trained model, I got very accurate bounding boxes, but the class labels are all wrong, so that explains the low numbers. However, I have done everything listed in here, so I am really confused as to why the class labels mismatch.


No C++ symbols exported after built libtensorflow_cc with bazel on windows

Please make sure that this is a build/installation issue. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:build_template
System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04):Windows 10
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary):source
TensorFlow version:v1.11.0
Python version:
Installed using virtualenv? pip? conda?:
Bazel version (if compiling from source):0.18.0 official build
GCC/Compiler version (if compiling from source):VC++ 2015.3 v14.00 (v140) MSVC
CUDA/cuDNN version:
GPU model and memory:

Describe the problem
Provide the exact sequence of commands / steps that you executed before running into the problem
Following the official documentation, I use bazel build -c opt //tensorflow:libtensorflow_cc.so to build tensorflow with c++ api on windows, since cmake is deprecated now.
Everything goes well, and libtensorflow_cc.so is generated in bazel out dir, which can be renamed to .dll, but I didn't find libtensorflow_cc.lib which should contain the exported symbols. Furthermore, I use dumpbin /exports libtensorflow_cc.so to view all the exported symbols (the output is attached in the next section), only TFE_* , TF_* and some other symbols are exported. Obviously no C++ symbols are exported.
I dig into the source code and found that there're extra parameters passed to the compiler which specifying a list of symbols to export on darwin and posix, but windows (https://github.com/tensorflow/tensorflow/blob/master/tensorflow/BUILD#L480-L488). I'm not familiar to Microsoft toolchains, but can similar thing be passed to MSVC if necessary so that we can get a proper libtensorflow_cc with necessary symbols exported on windows?
Any other info / logs
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.
Output of dumpbin /exports libtensorflow_cc.so:
Microsoft (R) COFF/PE Dumper Version 14.15.26730.0
Copyright (C) Microsoft Corporation.  All rights reserved.

Dump of file F:\libtensorflow_cc\execroot\org_tensorflow\bazel-out\x64_windows-opt\bin\tensorflow\libtensorflow_cc.so

File Type: DLL

  Section contains the following exports for libtensorflow_cc.so

    00000000 characteristics
    5BDF0174 time date stamp Sun Nov  4 22:25:56 2018
        0.00 version
           1 ordinal base
         233 number of functions
         233 number of names

    ordinal hint RVA      name

          1    0 02C79C50 ?DEVICE_CPU@tensorflow@@3QEBDEB
          2    1 02C79C58 ?DEVICE_GPU@tensorflow@@3QEBDEB
          3    2 02C79C60 ?DEVICE_SYCL@tensorflow@@3QEBDEB
          4    3 02618400 ?ThenBlasGemm@Stream@stream_executor@@QEAAAEAV12@W4Transpose@blas@2@0_K11MAEBV?$DeviceMemory@M@2@H2HMPEAV52@H@Z
          5    4 02618CA0 ?ThenBlasGemm@Stream@stream_executor@@QEAAAEAV12@W4Transpose@blas@2@0_K11MAEBV?$DeviceMemory@Uhalf@Eigen@@@2@H2HMPEAV52@H@Z
          6    5 02619540 ?ThenBlasGemm@Stream@stream_executor@@QEAAAEAV12@W4Transpose@blas@2@0_K11NAEBV?$DeviceMemory@N@2@H2HNPEAV52@H@Z
          7    6 02619DE0 ?ThenBlasGemm@Stream@stream_executor@@QEAAAEAV12@W4Transpose@blas@2@0_K11V?$complex@M@std@@AEBV?$DeviceMemory@V?$complex@M@std@@@2@H3H2PEAV72@H@Z
          8    7 0261A670 ?ThenBlasGemm@Stream@stream_executor@@QEAAAEAV12@W4Transpose@blas@2@0_K11V?$complex@N@std@@AEBV?$DeviceMemory@V?$complex@N@std@@@2@H3H2PEAV72@H@Z
          9    8 02C86690 ?kDatasetGraphKey@DatasetBase@tensorflow@@2QBDB
         10    9 02C866A0 ?kDatasetGraphOutputNodeKey@DatasetBase@tensorflow@@2QBDB
         11    A 001C8370 TFE_ContextAddFunction
         12    B 001C83C0 TFE_ContextAddFunctionDef
         13    C 001C8490 TFE_ContextAsyncClearError
         14    D 001C84A0 TFE_ContextAsyncWait
         15    E 001C84F0 TFE_ContextClearCaches
         16    F 001C8500 TFE_ContextDisableRunMetadata
         17   10 001C8510 TFE_ContextEnableRunMetadata
         18   11 001C8520 TFE_ContextEndStep
         19   12 001C8530 TFE_ContextExportRunMetadata
         20   13 001C8620 TFE_ContextGetDevicePlacementPolicy
         21   14 001C8630 TFE_ContextListDevices
         22   15 001C86A0 TFE_ContextOptionsSetAsync
         23   16 001C86B0 TFE_ContextOptionsSetConfig
         24   17 001C86C0 TFE_ContextOptionsSetDevicePlacementPolicy
         25   18 001C86D0 TFE_ContextSetAsyncForThread
         26   19 001C8720 TFE_ContextSetServerDef
         27   1A 001C87E0 TFE_ContextSetThreadLocalDevicePlacementPolicy
         28   1B 001C87F0 TFE_ContextStartStep
         29   1C 001C8800 TFE_DeleteContext
         30   1D 001C8830 TFE_DeleteContextOptions
         31   1E 001C8870 TFE_DeleteOp
         32   1F 001BFB40 TFE_DeleteTensorDebugInfo
         33   20 001C88A0 TFE_DeleteTensorHandle
         34   21 001C88F0 TFE_Execute
         35   22 001C8A50 TFE_NewContext
         36   23 001C8C40 TFE_NewContextOptions
         37   24 001C8C80 TFE_NewOp
         38   25 001C8E70 TFE_NewTensorHandle
         39   26 001C8F60 TFE_OpAddInput
         40   27 001C8F70 TFE_OpGetAttrType
         41   28 001C90E0 TFE_OpGetDevice
         42   29 001C9120 TFE_OpNameGetAttrType
         43   2A 001C91A0 TFE_OpSetAttrBool
         44   2B 001C9200 TFE_OpSetAttrBoolList
         45   2C 001C93B0 TFE_OpSetAttrFloat
         46   2D 001C9430 TFE_OpSetAttrFloatList
         47   2E 001C94B0 TFE_OpSetAttrFunction
         48   2F 001C9640 TFE_OpSetAttrFunctionList
         49   30 001C9850 TFE_OpSetAttrInt
         50   31 001C98D0 TFE_OpSetAttrIntList
         51   32 001C9950 TFE_OpSetAttrShape
         52   33 001C9C30 TFE_OpSetAttrShapeList
         53   34 001C9FF0 TFE_OpSetAttrString
         54   35 001CA070 TFE_OpSetAttrStringList
         55   36 001CA1E0 TFE_OpSetAttrType
         56   37 001CA230 TFE_OpSetAttrTypeList
         57   38 001CA2B0 TFE_OpSetDevice
         58   39 001CA300 TFE_OpSetXLACompilation
         59   3A 001BFB90 TFE_TensorDebugInfoOnDeviceDim
         60   3B 001BFBA0 TFE_TensorDebugInfoOnDeviceNumDims
         61   3C 001CA370 TFE_TensorHandleCopyToDevice
         62   3D 001CA420 TFE_TensorHandleDataType
         63   3E 001CA430 TFE_TensorHandleDeviceName
         64   3F 001CA510 TFE_TensorHandleDim
         65   40 001CA5C0 TFE_TensorHandleNumDims
         66   41 001CA670 TFE_TensorHandleResolve
         67   42 001BFBB0 TFE_TensorHandleTensorDebugInfo
         68   43 00372290 TF_AbortWhile
         69   44 003722A0 TF_AddControlInput
         70   45 003722B0 TF_AddGradients
         71   46 00372300 TF_AddGradientsWithPrefix
         72   47 00372BB0 TF_AddInput
         73   48 00372BC0 TF_AddInputList
         74   49 00372E50 TF_AllocateTensor
         75   4A 00372EC0 TF_ApiDefMapGet
         76   4B 00373070 TF_ApiDefMapPut
         77   4C 00373200 TF_CloseDeprecatedSession
         78   4D 00373200 TF_CloseSession
         79   4E 00373250 TF_ColocateWith
         80   4F 00373380 TF_DataTypeSize
         81   50 00373390 TF_DeleteApiDefMap
         82   51 003733C0 TF_DeleteBuffer
         83   52 00373400 TF_DeleteDeprecatedSession
         84   53 00373480 TF_DeleteDeviceList
         85   54 00366220 TF_DeleteFunction
         86   55 003734B0 TF_DeleteGraph
         87   56 00373520 TF_DeleteImportGraphDefOptions
         88   57 00373570 TF_DeleteImportGraphDefResults
         89   58 003735A0 TF_DeleteLibraryHandle
         90   59 003735D0 TF_DeletePRunHandle
         91   5A 003735E0 TF_DeleteSession
         92   5B 00373720 TF_DeleteSessionOptions
         93   5C 00373760 TF_DeleteStatus
         94   5D 003737B0 TF_DeleteTensor
         95   5E 00373820 TF_DeprecatedSessionListDevices
         96   5F 003738B0 TF_DeviceListCount
         97   60 003738E0 TF_DeviceListIncarnation
         98   61 00373A30 TF_DeviceListMemoryBytes
         99   62 00373B80 TF_DeviceListName
        100   63 00373CD0 TF_DeviceListType
        101   64 00373E20 TF_Dim
        102   65 00373E30 TF_ExtendGraph
        103   66 00373EF0 TF_FinishOperation
        104   67 00374250 TF_FinishWhile
        105   68 00366250 TF_FunctionGetAttrValueProto
        106   69 00366430 TF_FunctionImportFunctionDef
        107   6A 00366540 TF_FunctionName
        108   6B 00366570 TF_FunctionSetAttrValueProto
        109   6C 00366760 TF_FunctionToFunctionDef
        110   6D 00374890 TF_GetAllOpList
        111   6E 00374B60 TF_GetAllRegisteredKernels
        112   6F 00374C40 TF_GetBuffer
        113   70 001E4360 TF_GetCode
        114   71 00374C60 TF_GetOpList
        115   72 00374C80 TF_GetRegisteredKernelsForOp
        116   73 003667B0 TF_GraphCopyFunction
        117   74 003669D0 TF_GraphGetFunctions
        118   75 00374D90 TF_GraphGetOpDef
        119   76 00374F20 TF_GraphGetTensorNumDims
        120   77 00375050 TF_GraphGetTensorShape
        121   78 00375260 TF_GraphImportGraphDef
        122   79 003752A0 TF_GraphImportGraphDefWithResults
        123   7A 003753F0 TF_GraphImportGraphDefWithReturnOutputs
        124   7B 00375610 TF_GraphNextOperation
        125   7C 00366B80 TF_GraphNumFunctions
        126   7D 003756D0 TF_GraphOperationByName
        127   7E 003757F0 TF_GraphSetTensorShape
        128   7F 00366BF0 TF_GraphToFunction
        129   80 00375950 TF_GraphToGraphDef
        130   81 00375A10 TF_GraphVersions
        131   82 00375AD0 TF_ImportGraphDefOptionsAddControlDependency
        132   83 00375B00 TF_ImportGraphDefOptionsAddInputMapping
        133   84 00375CF0 TF_ImportGraphDefOptionsAddReturnOperation
        134   85 00375E70 TF_ImportGraphDefOptionsAddReturnOutput
        135   86 00375FC0 TF_ImportGraphDefOptionsNumReturnOperations
        136   87 00375FD0 TF_ImportGraphDefOptionsNumReturnOutputs
        137   88 00376000 TF_ImportGraphDefOptionsRemapControlDependency
        138   89 00376110 TF_ImportGraphDefOptionsSetPrefix
        139   8A 00376130 TF_ImportGraphDefOptionsSetUniquifyNames
        140   8B 00376140 TF_ImportGraphDefOptionsSetUniquifyPrefix
        141   8C 00376150 TF_ImportGraphDefResultsMissingUnusedInputMappings
        142   8D 00376170 TF_ImportGraphDefResultsReturnOperations
        143   8E 00376190 TF_ImportGraphDefResultsReturnOutputs
        144   8F 003761B0 TF_LoadLibrary
        145   90 00376260 TF_LoadSessionFromSavedModel
        146   91 00376890 TF_Message
        147   92 003768C0 TF_NewApiDefMap
        148   93 003769B0 TF_NewBuffer
        149   94 003769E0 TF_NewBufferFromString
        150   95 00376A40 TF_NewDeprecatedSession
        151   96 00376AD0 TF_NewGraph
        152   97 00376B00 TF_NewImportGraphDefOptions
        153   98 00376B70 TF_NewOperation
        154   99 00376BE0 TF_NewSession
        155   9A 00376D30 TF_NewSessionOptions
        156   9B 00376D60 TF_NewStatus
        157   9C 00376D90 TF_NewTensor
        158   9D 00377010 TF_NewWhile
        159   9E 00377430 TF_NumDims
        160   9F 00377440 TF_OperationDevice
        161   A0 00377460 TF_OperationGetAttrBool
        162   A1 00377500 TF_OperationGetAttrBoolList
        163   A2 003775F0 TF_OperationGetAttrFloat
        164   A3 003776A0 TF_OperationGetAttrFloatList
        165   A4 00377790 TF_OperationGetAttrInt
        166   A5 00377840 TF_OperationGetAttrIntList
        167   A6 00377930 TF_OperationGetAttrMetadata
        168   A7 00377F90 TF_OperationGetAttrShape
        169   A8 003780F0 TF_OperationGetAttrShapeList
        170   A9 003783B0 TF_OperationGetAttrString
        171   AA 00378490 TF_OperationGetAttrStringList
        172   AB 00378640 TF_OperationGetAttrTensor
        173   AC 00378730 TF_OperationGetAttrTensorList
        174   AD 00378910 TF_OperationGetAttrTensorShapeProto
        175   AE 003789B0 TF_OperationGetAttrTensorShapeProtoList
        176   AF 00378B60 TF_OperationGetAttrType
        177   B0 00378C00 TF_OperationGetAttrTypeList
        178   B1 00378CF0 TF_OperationGetAttrValueProto
        179   B2 00378D60 TF_OperationGetControlInputs
        180   B3 00378ED0 TF_OperationGetControlOutputs
        181   B4 00379040 TF_OperationInput
        182   B5 003790D0 TF_OperationInputListLength
        183   B6 00379290 TF_OperationInputType
        184   B7 003792A0 TF_OperationName
        185   B8 003792C0 TF_OperationNumControlInputs
        186   B9 003793F0 TF_OperationNumControlOutputs
        187   BA 00379520 TF_OperationNumInputs
        188   BB 00379530 TF_OperationNumOutputs
        189   BC 00379540 TF_OperationOpType
        190   BD 00379560 TF_OperationOutputConsumers
        191   BE 00379700 TF_OperationOutputListLength
        192   BF 003798C0 TF_OperationOutputNumConsumers
        193   C0 003799F0 TF_OperationOutputType
        194   C1 00379A00 TF_OperationToNodeDef
        195   C2 00379A60 TF_PRun
        196   C3 00379E00 TF_PRunSetup
        197   C4 0037A2E0 TF_Reset
        198   C5 0037A2F0 TF_Run
        199   C6 00373820 TF_SessionListDevices
        200   C7 0037A6A0 TF_SessionPRun
        201   C8 0037AB50 TF_SessionPRunSetup
        202   C9 0037B130 TF_SessionRun
        203   CA 0037B5F0 TF_SetAttrBool
        204   CB 0037B640 TF_SetAttrBoolList
        205   CC 0037B7E0 TF_SetAttrFloat
        206   CD 0037B820 TF_SetAttrFloatList
        207   CE 0037B880 TF_SetAttrFuncName
        208   CF 0037BA10 TF_SetAttrInt
        209   D0 0037BA50 TF_SetAttrIntList
        210   D1 0037BAB0 TF_SetAttrShape
        211   D2 0037BBC0 TF_SetAttrShapeList
        212   D3 0037BE20 TF_SetAttrString
        213   D4 0037BE80 TF_SetAttrStringList
        214   D5 0037C150 TF_SetAttrTensor
        215   D6 0037C230 TF_SetAttrTensorList
        216   D7 0037C590 TF_SetAttrTensorShapeProto
        217   D8 0037C720 TF_SetAttrTensorShapeProtoList
        218   D9 0037C9A0 TF_SetAttrType
        219   DA 0037C9E0 TF_SetAttrTypeList
        220   DB 0037CA40 TF_SetAttrValueProto
        221   DC 0037CC70 TF_SetConfig
        222   DD 0037CCD0 TF_SetDevice
        223   DE 0037CD10 TF_SetStatus
        224   DF 0037CDB0 TF_SetTarget
        225   E0 0037CDE0 TF_StringDecode
        226   E1 0037CF00 TF_StringEncode
        227   E2 0037CFE0 TF_StringEncodedSize
        228   E3 0037D000 TF_TensorByteSize
        229   E4 0037D010 TF_TensorData
        230   E5 0037D020 TF_TensorMaybeMove
        231   E6 0037D080 TF_TensorType
        232   E7 0037D090 TF_TryEvaluateConstant
        233   E8 0037D1F0 TF_Version

  Summary

      2D4000 .data
        1000 .gfids
      184000 .pdata
      B36000 .rdata
       53000 .reloc
     2949000 .text
        1000 .tls
       11000 _RDATA

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): Yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Windows10
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary): source
TensorFlow version (use command below): r1.12
Python version: 3.5
Bazel version (if compiling from source): 0.15
GCC/Compiler version (if compiling from source): vc140
CUDA/cuDNN version: CUDA 10 / cuDNN <IP_ADDRESS>
GPU model and memory: GTX 1080Ti / 11 GB
Exact command to reproduce:

Similar problem over here. I followed the official instructions to build Tensorflow in Windows using bazel (although I had to make a patch for eigen, as described here), and executed bazel build –config=opt –config=cuda //tensorflow:libtensorflow_cc.so. The compilation succeded.
However, the problems come when I want to include it in my own project (which I have in Visual Studio). I could not find any official documentation on how to do this; instead I had to search over many blogs or issues... Most of the explanations (if not all) refer to using the cmake build of Tensorflow, which now is not possible to do with the latest version.
Anyway, I found all the necessary headers around the bazel build. I had to include the following directories:
C:\development\tensorflow\bazel-tensorflow\external\eigen_archive
C:\development\tensorflow\bazel-tensorflow\external\com_google_absl
C:\development\tensorflow\bazel-tensorflow\external\protobuf_archive_src
C:\development\tensorflow\bazel-genfiles
C:\development\tensorflow\bazel-tensorflow

But the problem comes when linking...
When I execute dumpbin /exports libtensorflow_cc.so I get far more symbols than you (3061). To be able to link them, I had the build the .lib file from libtensorflow_cc.so. I did dumpbin /EXPORTS libtensorflow_cc.so > myfile.exports, I copied all the functions names and pasted them in a file called myfile.def (and added a line with the word EXPORTS at the beginning), and then did lib /def:myfile.def /out:tensorflow.lib /machine:x64. Then in Visual Studio I included tensorflow.lib.
However, when compiling my project, it is still requiring more symbols than those present in libtensorflow_cc.so. This is the output I get:
1>stdafx.cpp
1>BrainServer.cpp
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(3): warning C4005: 'COMPILER_MSVC': macro redefinition
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(3): note: command-line arguments:  see previous definition of 'COMPILER_MSVC'
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(4): warning C4005: 'NOMINMAX': macro redefinition
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(4): note: command-line arguments:  see previous definition of 'NOMINMAX'
1>BrainServer.cpp(62): warning C4101: 'm_logLevel': unreferenced local variable
1>BrainServerConfig.cpp
1>ClassificationRunner.cpp
1>c:\development\daview\brainserver\brainserver\ClassificationRunner.h(3): warning C4005: 'COMPILER_MSVC': macro redefinition
1>c:\development\daview\brainserver\brainserver\ClassificationRunner.h(3): note: command-line arguments:  see previous definition of 'COMPILER_MSVC'
1>c:\development\daview\brainserver\brainserver\ClassificationRunner.h(4): warning C4005: 'NOMINMAX': macro redefinition
1>c:\development\daview\brainserver\brainserver\ClassificationRunner.h(4): note: command-line arguments:  see previous definition of 'NOMINMAX'
1>Crop.cpp
1>SharedListsManager.cpp
1>ImageSaver.cpp
1>NetworkRunner.cpp
1>c:\development\daview\brainserver\brainserver\NetworkRunner.h(3): warning C4005: 'COMPILER_MSVC': macro redefinition
1>c:\development\daview\brainserver\brainserver\NetworkRunner.h(3): note: command-line arguments:  see previous definition of 'COMPILER_MSVC'
1>c:\development\daview\brainserver\brainserver\NetworkRunner.h(4): warning C4005: 'NOMINMAX': macro redefinition
1>c:\development\daview\brainserver\brainserver\NetworkRunner.h(4): note: command-line arguments:  see previous definition of 'NOMINMAX'
1>NetworkRunner.cpp(205): warning C4101: 'ex': unreferenced local variable
1>Query.cpp
1>Server.cpp
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(3): warning C4005: 'COMPILER_MSVC': macro redefinition
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(3): note: command-line arguments:  see previous definition of 'COMPILER_MSVC'
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(4): warning C4005: 'NOMINMAX': macro redefinition
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(4): note: command-line arguments:  see previous definition of 'NOMINMAX'
1>Session.cpp
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(3): warning C4005: 'COMPILER_MSVC': macro redefinition
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(3): note: command-line arguments:  see previous definition of 'COMPILER_MSVC'
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(4): warning C4005: 'NOMINMAX': macro redefinition
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(4): note: command-line arguments:  see previous definition of 'NOMINMAX'
1>TamperingRunner.cpp
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(3): warning C4005: 'COMPILER_MSVC': macro redefinition
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(3): note: command-line arguments:  see previous definition of 'COMPILER_MSVC'
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(4): warning C4005: 'NOMINMAX': macro redefinition
1>c:\development\daview\brainserver\brainserver\TamperingRunner.h(4): note: command-line arguments:  see previous definition of 'NOMINMAX'
1>tinystr.cpp
1>tinyxml.cpp
1>tinyxmlerror.cpp
1>tinyxmlparser.cpp
1>BrainServer.obj : error LNK2001: unresolved external symbol "char const * __cdecl tensorflow::core::GetVarint32PtrFallback(char const *,char const *,unsigned int *)" (?GetVarint32PtrFallback@core@tensorflow@@YAPEBDPEBD0PEAI@Z)
1>BrainServer.obj : error LNK2001: unresolved external symbol "public: __cdecl tensorflow::Tensor::~Tensor(void)" (??1Tensor@tensorflow@@QEAA@XZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: void __cdecl google::protobuf::internal::LogFinisher::operator=(class google::protobuf::internal::LogMessage &)" (??4LogFinisher@internal@protobuf@google@@QEAAXAEAVLogMessage@123@@Z)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(char const *)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@PEBD@Z)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl google::protobuf::internal::LogMessage::LogMessage(enum google::protobuf::LogLevel,char const *,int)" (??0LogMessage@internal@protobuf@google@@QEAA@W4LogLevel@23@PEBDH@Z)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl google::protobuf::internal::LogMessage::~LogMessage(void)" (??1LogMessage@internal@protobuf@google@@QEAA@XZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl tensorflow::internal::LogMessageFatal::LogMessageFatal(char const *,int)" (??0LogMessageFatal@internal@tensorflow@@QEAA@PEBDH@Z)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: virtual __cdecl tensorflow::internal::LogMessageFatal::~LogMessageFatal(void)" (??1LogMessageFatal@internal@tensorflow@@UEAA@XZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "private: void __cdecl tensorflow::TensorShapeRep::SlowCopyFrom(class tensorflow::TensorShapeRep const &)" (?SlowCopyFrom@TensorShapeRep@tensorflow@@AEAAXAEBV12@@Z)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "private: void __cdecl tensorflow::TensorShapeRep::DestructorOutOfLine(void)" (?DestructorOutOfLine@TensorShapeRep@tensorflow@@AEAAXXZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl tensorflow::Tensor::Tensor(void)" (??0Tensor@tensorflow@@QEAA@XZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl tensorflow::Tensor::Tensor(enum tensorflow::DataType,class tensorflow::TensorShape const &)" (??0Tensor@tensorflow@@QEAA@W4DataType@1@AEBVTensorShape@1@@Z)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl tensorflow::TensorShapeBase<class tensorflow::TensorShape>::TensorShapeBase<class tensorflow::TensorShape>(void)" (??0?$TensorShapeBase@VTensorShape@tensorflow@@@tensorflow@@QEAA@XZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl tensorflow::TensorShapeBase<class tensorflow::TensorShape>::TensorShapeBase<class tensorflow::TensorShape>(class absl::Span<__int64 const >)" (??0?$TensorShapeBase@VTensorShape@tensorflow@@@tensorflow@@QEAA@V?$Span@$$CB_J@absl@@@Z)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl tensorflow::internal::CheckOpMessageBuilder::CheckOpMessageBuilder(char const *)" (??0CheckOpMessageBuilder@internal@tensorflow@@QEAA@PEBD@Z)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl tensorflow::internal::CheckOpMessageBuilder::~CheckOpMessageBuilder(void)" (??1CheckOpMessageBuilder@internal@tensorflow@@QEAA@XZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: class std::basic_ostream<char,struct std::char_traits<char> > * __cdecl tensorflow::internal::CheckOpMessageBuilder::ForVar2(void)" (?ForVar2@CheckOpMessageBuilder@internal@tensorflow@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@XZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > * __cdecl tensorflow::internal::CheckOpMessageBuilder::NewString(void)" (?NewString@CheckOpMessageBuilder@internal@tensorflow@@QEAAPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "private: void __cdecl tensorflow::Tensor::CheckIsAlignedAndSingleElement(void)const " (?CheckIsAlignedAndSingleElement@Tensor@tensorflow@@AEBAXXZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "private: static class absl::InlinedVector<__int64,4,class std::allocator<__int64> > __cdecl tensorflow::Tensor::ComputeFlatInnerDims(class absl::Span<__int64 const >,__int64)" (?ComputeFlatInnerDims@Tensor@tensorflow@@CA?AV?$InlinedVector@_J$03V?$allocator@_J@std@@@absl@@V?$Span@$$CB_J@4@_J@Z)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "public: class absl::InlinedVector<__int64,4,class std::allocator<__int64> > __cdecl tensorflow::TensorShapeBase<class tensorflow::TensorShape>::dim_sizes(void)const " (?dim_sizes@?$TensorShapeBase@VTensorShape@tensorflow@@@tensorflow@@QEBA?AV?$InlinedVector@_J$03V?$allocator@_J@std@@@absl@@XZ)
1>ClassificationRunner.obj : error LNK2001: unresolved external symbol "private: void __cdecl tensorflow::Tensor::CheckTypeAndIsAligned(enum tensorflow::DataType)const " (?CheckTypeAndIsAligned@Tensor@tensorflow@@AEBAXW4DataType@2@@Z)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl tensorflow::GraphDef::GraphDef(void)" (??0GraphDef@tensorflow@@QEAA@XZ)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "public: virtual __cdecl tensorflow::GraphDef::~GraphDef(void)" (??1GraphDef@tensorflow@@UEAA@XZ)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "public: __int64 __cdecl tensorflow::TensorShapeBase<class tensorflow::TensorShape>::dim_size(int)const " (?dim_size@?$TensorShapeBase@VTensorShape@tensorflow@@@tensorflow@@QEBA_JH@Z)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "public: virtual __cdecl tensorflow::ConfigProto::~ConfigProto(void)" (??1ConfigProto@tensorflow@@UEAA@XZ)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "class tensorflow::Status __cdecl tensorflow::ReadBinaryProto(class tensorflow::Env *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class google::protobuf::MessageLite *)" (?ReadBinaryProto@tensorflow@@YA?AVStatus@1@PEAVEnv@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAVMessageLite@protobuf@google@@@Z)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "public: static class tensorflow::Env * __cdecl tensorflow::Env::Default(void)" (?Default@Env@tensorflow@@SAPEAV12@XZ)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "class tensorflow::Status __cdecl tensorflow::ReadTextProto(class tensorflow::Env *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class google::protobuf::Message *)" (?ReadTextProto@tensorflow@@YA?AVStatus@1@PEAVEnv@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAVMessage@protobuf@google@@@Z)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "public: __cdecl tensorflow::SessionOptions::SessionOptions(void)" (??0SessionOptions@tensorflow@@QEAA@XZ)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "class tensorflow::Session * __cdecl tensorflow::NewSession(struct tensorflow::SessionOptions const &)" (?NewSession@tensorflow@@YAPEAVSession@1@AEBUSessionOptions@1@@Z)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "private: static class tensorflow::GPUOptions * __cdecl google::protobuf::Arena::CreateMaybeMessage<class tensorflow::GPUOptions>(class google::protobuf::Arena *)" (??$CreateMaybeMessage@VGPUOptions@tensorflow@@$$V@Arena@protobuf@google@@CAPEAVGPUOptions@tensorflow@@PEAV012@@Z)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "private: void __cdecl tensorflow::TensorShape::CheckDimsEqual(int)const " (?CheckDimsEqual@TensorShape@tensorflow@@AEBAXH@Z)
1>NetworkRunner.obj : error LNK2001: unresolved external symbol "private: void __cdecl tensorflow::TensorShape::CheckDimsAtLeast(int)const " (?CheckDimsAtLeast@TensorShape@tensorflow@@AEBAXH@Z)
1>C:\development\daview\BrainServer\x64\Release\BrainServer.exe : fatal error LNK1120: 34 unresolved externals
1>Done building project "BrainServer.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

In any case, it would be appreciated if there were some instructions on how to use the C++ API of Tensorflow in an independent project (not having to build it with bazel).

In addition, I solved my problem by using the approach here. I added the following symbols to the tf_exported_symbols_msvc.lds file for the inference_cc example.
LIBRARY tensorflow_cc
EXPORTS
    ??0MetaGraphDef@tensorflow@@QEAA@XZ
    ??1MetaGraphDef@tensorflow@@UEAA@XZ
    ??0LogMessageFatal@internal@tensorflow@@QEAA@PEBDH@Z
    ??1LogMessageFatal@internal@tensorflow@@UEAA@XZ
    ??0CheckOpMessageBuilder@internal@tensorflow@@QEAA@PEBD@Z
    ??1CheckOpMessageBuilder@internal@tensorflow@@QEAA@XZ
    ?ForVar2@CheckOpMessageBuilder@internal@tensorflow@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@XZ
    ?NewString@CheckOpMessageBuilder@internal@tensorflow@@QEAAPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ
    ?GetVarint32PtrFallback@core@tensorflow@@YAPEBDPEBD0PEAI@Z
    ?ToString@Status@tensorflow@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ
    ?SlowCopyFrom@Status@tensorflow@@AEAAXPEBUState@12@@Z
    ?_GraphDef_default_instance_@tensorflow@@3VGraphDefDefaultTypeInternal@1@A
    ?NewSession@tensorflow@@YA?AVStatus@1@AEBUSessionOptions@1@PEAPEAVSession@1@@Z
    ??0SessionOptions@tensorflow@@QEAA@XZ
    ??1ConfigProto@tensorflow@@UEAA@XZ
    ?ReadBinaryProto@tensorflow@@YA?AVStatus@1@PEAVEnv@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAVMessageLite@protobuf@google@@@Z
    ?Default@Env@tensorflow@@SAPEAV12@XZ
    ?CheckIsAlignedAndSingleElement@Tensor@tensorflow@@AEBAXXZ
    ?_SaverDef_default_instance_@tensorflow@@3VSaverDefDefaultTypeInternal@1@A
    ?CheckTypeAndIsAligned@Tensor@tensorflow@@AEBAXW4DataType@2@@Z
    ??1Tensor@tensorflow@@QEAA@XZ
    ??0Tensor@tensorflow@@QEAA@W4DataType@1@AEBVTensorShape@1@@Z
    ??0?$TensorShapeBase@VTensorShape@tensorflow@@@tensorflow@@QEAA@XZ
    ??0?$TensorShapeBase@VTensorShape@tensorflow@@@tensorflow@@QEAA@V?$Span@$$CB_J@absl@@@Z
    ?DestructorOutOfLine@TensorShapeRep@tensorflow@@AEAAXXZ
    ?TfCheckOpHelperOutOfLine@tensorflow@@YAPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBVStatus@1@PEBD@Z
    ?DebugString@Tensor@tensorflow@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ
    ?SlowCopyFrom@TensorShapeRep@tensorflow@@AEAAXAEBV12@@Z

Now it links correctly! No renaming needed for the libtensorflow_cc.so file, only when adding it near the executable during runtime.

@Steroes Could you please kindly offer a short tutorial on how to solve the problem and configurations on linking?

See my post. Let me know if it doesnt work.

@Steroes : Can you please provide ex syntax of how to use create_def_file.py to generate symbols. I am getting error of file cannot be found.
In reference with the link you have posted.
I am trying to run a cpp program using tensorflow(1.8) build using bazel
And getting the linker error when i am trying to run the sample program using qt.
I just had a doubt that bazel generates many lib files when we build tensorflow:
In my case C:\tensorflow-r1.8\bazel-out\x64_windows-opt\bin\tensorflow\cc directory has lot of lib files relevant to cpp.
I tried to run a sample program linking all those relevant lib files but was getting linkage error.
I am asking this because when i build the sample program using bazel it gets build successfully without any error.
So i was thinking exporting the symbols to the tensorflow.lib files will make any sense specially in my case.

I dont use the scripts, because they generate too many symbols which the linker cannot handle. I add them based on my linker errors. Just copy the signatures to the .lds file, see my link above to the contents of that file.

@Steroes could you please tell me how to get the tf_exported_symbols_msvc files?
I want to write complete tf_exported_symbols_msvc.lds, but I don't know how to get the name of the those function.

@Steroes could you please tell me how to get the tf_exported_symbols_msvc files?
I want to write complete tf_exported_symbols_msvc.lds, but I don't know how to get the name of the those function.

The file you can create manually, and put it in tensorflow\tensorflow\ directory. The content will be like
LIBRARY tensorflow_cc
EXPORTS
    ??0MetaGraphDef@tensorflow@@QEAA@XZ
    ??1MetaGraphDef@tensorflow@@UEAA@XZ
    ??0LogMessageFatal@internal@tensorflow@@QEAA@PEBDH@

This content you can get for your specific project by linking against the tensorflow lib (which will link against the dll). The linker errors that you will get from Visual Studio for example, will have the symbols in it. Look for the signatures like ??0MetaGraphDef@tensorflow@@QEAA@XZ. Copy and paste these in the tf_exported_symbols_msvc.lds file, and rerun the bazel build command. Then the dll will be relinked with the new symbols. Repeat until there are no more linker errors.

@Steroes  Thanks a lot. but there is till bug when using
sess_options.config.mutable_gpu_options()->set_visible_device_list(gpu_d)
to config the session
In version 1.5, I fix the bug with add tf_proto_cc.lib before the tensorflow.lib to the Linker. so i guess some function about sess_options in tensorflow.lib was overried by the function  in tf_proto_cc.lib.
but in version 1.12, I can't found tf_proto_cc.lib  after build the tensorflow with bazel, so I want to try   add the functions whitch in  tf_proto_cc.lib to tf_exported_symbols_msvc.lds to fix the bug.  But I can't get the functions name, beacuse there is no linker errors when  build my project.

@kingstarcraft What error do you get then?

@kingstarcraft Did you solve this problem? Facing the same issue.

Hello,
@Steroes I did what you mentioned. But the linker errors are not going.
I think it has to do with the fact that I am using TF 2.0 and the modifications in the BUILD file are different.
I added the missing symbols to the tf_exported_symbols_mscv.lds and ran the build again but that does not solve my linking errors. I get the same symbols as missing.
Some background on how I ran the build->
For TF 2.0 BUILD file I cannot use the git -diff file with the changes mentioned in (https://github.com/tensorflow/tensorflow/issues/22047#issuecomment-421452033).
So I made the required changes manually (line 538 and 661 in this case), added the tf_exported_symbols.lds with my missing symbols and ran the bazel build //tensorflow:tensorflow_cc.
But that is not solving the linking errors.
Please help

@rounakskm Is this still an issue? Please check or create issue on https://github.com/guikarist/tensorflow-windows-build-script otherwise.

@Steroes Thanks a lot. but there is till bug when using
sess_options.config.mutable_gpu_options()->set_visible_device_list(gpu_d)
to config the session
In version 1.5, I fix the bug with add tf_proto_cc.lib before the tensorflow.lib to the Linker. so i guess some function about sess_options in tensorflow.lib was overried by the function in tf_proto_cc.lib.
but in version 1.12, I can't found tf_proto_cc.lib after build the tensorflow with bazel, so I want to try add the functions whitch in tf_proto_cc.lib to tf_exported_symbols_msvc.lds to fix the bug. But I can't get the functions name, beacuse there is no linker errors when build my project.

Same error. Wondering how to solve the problem.

@ttdd11 Same issue. Did you fix this?

@ttdd11 Same issue. Did you fix this?

@ZhuoranLyu +1 .Did you fix this?

@ttdd11 Same issue. Did you fix this?

@ZhuoranLyu +1 .Did you fix this?

I figured it out. Just add the functions to tf_exported_symbols_msvc.lds.

I was able to fix this for myself, building C++ on Windows, not using the tf_exported_symbols_msvc.lds method, but by using the TF_EXPORT method.
I made a README explaining my solution. The tutorial is step by step and starts at the very beginning, so you may have to scroll down past steps you have already done, like checking your hardware, installing Bazel etc.
Here is the url: https://github.com/sitting-duck/stuff/tree/master/ai/tensorflow/build_tensorflow_1.14_source_for_Windows
Probably you will want to scroll all the way down to this part:
https://github.com/sitting-duck/stuff/tree/master/ai/tensorflow/build_tensorflow_1.14_source_for_Windows#step-7-build-the-dll
It shows how to pass command to create .lib and .dll.
Then to test your .lib you should link into your c++ project,
Then it will show you how to identify and fix the missing symbols using the TF_EXPORT macro
I am actively working on making this tutorial better so feel free to respond to my comment here or email<EMAIL_ADDRESS>with feedback or if you are confused on a particular part. :)

@sitting-duck Thank you for your guide. I've been trying your steps with the latest Tensorflow 2.0 code, protobuf 3.8.0, Bazel 0.26.1, CUDA 10.1, and Visual Studio 2017 Build Tools. I got to the last step where I see unresolved external symbols. I modified the source code of a few files with TF_EXPORT and #include "tensorflow/core/platform/macros.h" Then I redid the line for building tensorflow.lib. I noticed that the date modified of tensorflow.lib didn't change at this step but tensorflow.dll did change. And now the errors in my Visual Studio project that try to use the tensorflow.lib have a slightly different unresolved error message:
unresolved external symbol "__declspec(dllimport) public: __cdecl tensorflow::ops::Subtract ..."
If TF_COMPILE_LIBRARY had been set, then the macro would have been __declspec(dllexport) .... Would that have avoided the error? This was my reading on that https://stackoverflow.com/questions/8863193/what-does-declspecdllimport-really-mean
https://docs.microsoft.com/en-us/cpp/cpp/dllexport-dllimport?view=vs-2019
What are your Additional Include Directories and do they have the modified files with the TF_EXPORT and macros.h include?

@sitting-duck Many thanks for the README file, it is indeed very useful, I followed all the steps and could build tf, generating the .dll and .lib function, however, similar to the people in this thread I have problems with unresolved external symbol.  I made the modifications as indicated:

in the file session.h I added the line:
#include "tensorflow/core/platform/macros.h"
just after
#ifndef TENSORFLOW_CORE_PUBLIC_SESSION_H_
#define TENSORFLOW_CORE_PUBLIC_SESSION_H_

I added TF_EXPORT as follows:
class Session {
public:
TF_EXPORT Session();

then I built the .lib again using:
bazel build --config=cuda tensorflow:tensorflow.lib

However, after these steps I still have 2 unresolved external sumbol errors:

Error	LNK2019	unresolved external symbol "public: __cdecl tensorflow::SessionOptions::SessionOptions(void)" (??0SessionOptions@tensorflow@@QEAA@XZ) referenced in function xxxxx

Error	LNK2019	unresolved external symbol "class tensorflow::Session * __cdecl tensorflow::NewSession(struct tensorflow::SessionOptions const &)" (?NewSession@tensorflow@@YAPEAVSession@1@AEBUSessionOptions@1@@Z) referenced in function xxxx

I tried building both a Release and Debug version, both failed with same errors.
Any hint on how can this be fixed ?

@lattard Can you find where SessionOptions and NewSession are defined and put in TF_EXPORT and #include "tensorflow/core/platform/macros.h" like you did for Session?

@DBraun Apologies for the delay in response. If you cure one missing symbol and then find another that is good progress in my experience with this. I usually only see the Windows MSVC compiler report one or maybe two missing symbols at a time. I seem to have to fix these errors before I can see the next one.
The next step (my guess) is to basically locate that new symbol, tensorflow::ops::Subtract and then TF_EXPORT for it as well. You may have to do this for each symbol that your code uses that Tensorflow doesn't export by default. I had to add TF_EXPORT and then build my .lib many times to get my C++ project code to compile.
Tensorflow source code has many symbolic links in it, so searching the dir recursively (perhaps using grep -rn) did not work for me because I guess grep couldn't follow the symbolic links.
I have always had to find the line of code in my project that was calling the symbol (like in your case, find my code that calls tensorflow::ops::Subtract) and then right click and follow symbol in the IDE I used.
I am very interested in learning a better way to locate symbols in the Tensorflow code so if anyone does know a superior method please let me know.
As for my include directories, if I am accessing a symbol, for example, tensorflow::ops::Subtract, I also have to #include the .h or .hpp file that contains that symbol definition. Same for Session, NewSession etc.
I am not sure about the machine generated files to be completely honest, but I suppose there is no harm in trying it out, I found that just making the edit and compiling the .lib file usually does take me too long.
When you ask, "Can you find where SessionOptions and NewSession are defined and put in TF_EXPORT and #include "tensorflow/core/platform/macros.h" like you did for Session?"
I had to use TF_EXPORT for those symbols as well. I located them using the same method (right click -> Go to symbol) to find them.

@lattard I had to repeat the process for those symbols as well. The compiler seems to only show one or two missing symbol errors at a time.
I had to repeat this process for SessionOptions and NewSession in my code as well.
If you are adding it to a function definition, make sure you put it after the return type.
(CORRECT) void TF_EXPORT functionName();
(NOT CORRECT) TF_EXPORT void functionName();
I think you are on the right track, you just need to repeat the process for each missing symbol. I read somewhere that Tensorflow does not export ALL the symbols by default because there is a 60000 symbol limit for dlls.
This is why I had to build the Tensorflow code myself and modify the code to get the symbols I needed.
I hope that helps. Feel free to reach out, my comment to @DBraun may also have some related info that hopefully can be useful to you. :)

@DBraun Thanks! In fact I've done that for those symbols also now and I've solved the issue.

Ok thanks for the reassurance. I did the TF_EXPORT stuff a bit more carefully and turned 21 linker errors into just 8. Now the errors that remain are all related to code in machine generated files "\bazel-out\x64_windows-opt\bin\tensorflow\cc\ops\math_ops.h". I want to use Div and Sub because they're used here https://github.com/tensorflow/tensorflow/blob/a4794bcbf836e78984b75a545b67f42a05455721/tensorflow/examples/label_image/main.cc#L170 but easy-to-modify declarations of those classes don't exist in the source code I think. I might just try to avoid using Div and Sub in the meantime.

Ok thanks for the reassurance. I did the TF_EXPORT stuff a bit more carefully and turned 21 linker errors into just 8. Now the errors that remain are all related to code in machine generated files "\bazel-out\x64_windows-opt\bin\tensorflow\cc\ops\math_ops.h". I want to use Div and Sub because they're used here
https://github.com/tensorflow/tensorflow/blob/a4794bcbf836e78984b75a545b67f42a05455721/tensorflow/examples/label_image/main.cc#L170
but easy-to-modify declarations of those classes don't exist in the source code I think. I might just try to avoid using Div and Sub in the meantime.

I dont see any image related code on your Github. If you push any related code to h
Github or want to share it with me please let me know I love to collaborate. You can reach me at<EMAIL_ADDRESS>

@sitting-duck Hi, many thanks for your solution. It seems to be working well.
However, I'm unable to find the function definition os grapf_def() and saver_def(). Right click, 'go to source' takes me to meta_graph.pb.h, which has 'DO NOT EDIT' at the top of the file.
I'm trying LoadModel function from https://github.com/PatWie/tensorflow-cmake/blob/master/examples/keras/inference.cpp and this is the error message I get,

Could someone point me to the class/function I should add TF_EPORT?
thanks!

@AshwinAKannan
I have seen other people using a method that involves a tf_exported_symbols_msvc.lds
https://github.com/tensorflow/tensorflow/issues/23542#issuecomment-464661172
I have seen an explanation of that method at the link above, hopefully if that doesn't help, it may give you some good keywords for googling that .lds file method.
People have reported success using that method from what I have seen, but I myself was never able to get it to work.
I cannot think of any other way at the moment besides the .lds file method, and the TF_EXPORT, but there may be some other way I have not found yet,
Were you able to get this resolved? I hope to work again on this kind of issue this weekend, as I am trying to create a nice all in one guide for compiling and linking Tensorflow for Windows.

@sitting-duck I tried that, couldn’t get it to work though

@AshwinAKannan @sitting-duck From my investigations on 1.15, it looks like TF moved away from pulling symbols from a named def file (such as tf_exported_symbols_msvc.lds), and uses a procedure to automatically compile a dummy dll, poll that to extract all symbols, then filter that (see def_file_filter.py.tpl) to reduce the symbols below the 64k number of exportable symbols limit.
The TF_EXPORT trick will work, you can also try adding the missing symbols directly to the def_file_filter.py.tpl file. I've added the following to mine for example:
   def_fp.write("\t ??0Operation@tensorflow@@QEAA@PEAVNode@1@@Z\n")     def_fp.write("\t ?Const@ops@tensorflow@@YA?AVOutput@2@AEBVScope@2@AEBUInitializer@Input@2@@Z\n")     def_fp.write("\t ??0Initializer@Input@tensorflow@@QEAA@AEBV?$initializer_list@UInitializer@Input@tensorflow@@@std@@@Z\n")     def_fp.write("\t ??1Scope@tensorflow@@QEAA@XZ\n")     def_fp.write("\t ?NewRootScope@Scope@tensorflow@@SA?AV12@XZ\n")     def_fp.write("\t ?GetUniqueNameForOp@Scope@tensorflow@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV34@@Z\n")     def_fp.write("\t ?UpdateStatus@Scope@tensorflow@@QEBAXAEBVStatus@2@@Z\n")     def_fp.write("\t ?UpdateBuilder@Scope@tensorflow@@QEBAXPEAVNodeBuilder@2@@Z\n")     def_fp.write("\t ?ok@Scope@tensorflow@@QEBA_NXZ\n")     def_fp.write("\t ?graph@Scope@tensorflow@@QEBAPEAVGraph@2@XZ\n")     def_fp.write("\t ?ToGraphDef@Scope@tensorflow@@QEBA?AVStatus@2@PEAVGraphDef@2@@Z\n")     def_fp.write("\t ?DoShapeInference@Scope@tensorflow@@QEBA?AVStatus@2@PEAVNode@2@@Z\n")     def_fp.write("\t ?WithOpNameImpl@Scope@tensorflow@@AEBA?AV12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z\n")     def_fp.write("\t ?AsNodeOut@ops@tensorflow@@YA?AUNodeOut@NodeBuilder@2@AEBVScope@2@AEBVInput@2@@Z\n")     def_fp.write("\t ??0Div@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@1@Z\n")     def_fp.write("\t ??0MatMul@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@1@Z\n")     def_fp.write("\t ??0Sqrt@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@@Z\n")     def_fp.write("\t ??0Sum@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@1@Z\n")     def_fp.write("\t ??0SessionOptions@tensorflow@@QEAA@XZ\n")     def_fp.write("\t ?NewSession@tensorflow@@YAPEAVSession@1@AEBUSessionOptions@1@@Z\n")     def_fp.write("\t ??_7GraphDef@tensorflow@@6B@\n")     def_fp.write("\t ??0Square@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@@Z\n")     def_fp.write("\t ?_GPUOptions_default_instance_@tensorflow@@3VGPUOptionsDefaultTypeInternal@1@A\n")     def_fp.write("\t ?NewSession@tensorflow@@YA?AVStatus@1@AEBUSessionOptions@1@PEAPEAVSession@1@@Z\n")
This symbol problem is very annoying. However I'm also hitting all sorts of other issues on Windows with v1.15.0, I have yet to see an example where a shared 'tensorflow_cc.dll' can be used in an external exe without a lot of work. For example, the tutorial 'example_trainer' behaves very strangely, I get issues similar to this and can't find a way to work around them: https://github.com/tensorflow/tensorflow/issues/5379
I would love if the TF devs could show the 'example_trainer' being built and linked against the shared 'tensorflow_cc.dll'.

There is easy way to rebuild import library (.lib) and DLL libraries on Windows with adding missing unresolved symbols in a few seconds.
In my case when I build TF, I get the following files in bazel-genfiles:
tensorflow\                     <- main folder (as symbolic link)
   bazel-genfiles\
       tensorflow\
             tensorflow_cc.dll            // dynamic library
             tensorflow_cc.dll.if.lib    // import library
             tensorflow_filtered_def_file.def
             tensorflow_cc.dll-2.params

File tensorflow_filtered_def_file.def contains all imported/exported symbols.
File tensorflow_cc.dll-2.params contains list of static library which are used to generate final .DLL library (By thw way, content of this file can be easily used to generate one BIG static library of TF, instead of DLL.).
Now, when TF is build, there is a log file named command.log, when we open it we can see:
  C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.24.28314/bin/HostX64/x64/link.exe
     /nologo /DLL /SUBSYSTEM:CONSOLE -defaultlib:advapi32.lib -DEFAULTLIB:advapi32.lib
     -ignore:4221 /MACHINE:X64 @bazel-out/x64_windows-opt/bin/tensorflow/tensorflow_cc.dll-2.params
     /OPT:ICF /OPT:REF /DEF:bazel-out/x64_windows-opt/bin/tensorflow/tensorflow_filtered_def_file.def /ignore:4070

this command use linker to rebuild DLL/LIB. It takes two files menotied above.
All we have to do is to (make tensorflow_filtered_def_file.def as writeable), open it and put missing symbols, for example:
EXPORTS
    ?SetTotalBytesLimit@CodedInputStream@io@protobuf@google@@QEAAXH@Z
    ?default_recursion_limit_@CodedInputStream@io@protobuf@google@@0HA
    ??_7GraphDef@tensorflow@@6B@
    ??0SessionOptions@tensorflow@@QEAA@XZ
    ??1CodedInputStream@io@protobuf@google@@QEAA@XZ
    ?NewSession@tensorflow@@YAPEAVSession@1@AEBUSessionOptions@1@@Z

then we enter into parent directory of TF in command line with enabled Visual Build Tools (for example from VS2019), and just run this command. In a few seconds new import library and DLL will be generated.

Anyone try this again recently with the latest TensorFlow? I think we have to use Bazel 2.0.0  https://github.com/tensorflow/tensorflow/blob/95be0349fb11e735efc122fa4c54816e27279684/configure.py#L53 but now I'm having trouble with bazel build --config=cuda tensorflow:tensorflow.dll
This is one of my environment variables.
BAZEL_VS: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
According to the error output I think it's using the 2017 tools. Maybe that's the issue?

@ttdd11 Same issue. Did you fix this?

@ZhuoranLyu +1 .Did you fix this?

I figured it out. Just add the functions to tf_exported_symbols_msvc.lds.

how did you konw the functions name?

Anyone try this again recently with the latest TensorFlow? I think we have to use Bazel 2.0.0
https://github.com/tensorflow/tensorflow/blob/95be0349fb11e735efc122fa4c54816e27279684/configure.py#L53
but now I'm having trouble with bazel build --config=cuda tensorflow:tensorflow.dll
This is one of my environment variables.
BAZEL_VS: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
According to the error output I think it's using the 2017 tools. Maybe that's the issue?
ERROR: C:/users/-----/documents/github/tensorflow/tensorflow/core/kernels/BUILD:5427:1: C++ compilation of rule '//tensorflow/core/kernels:sparse_tensor_dense_matmul_op_gpu' failed (Exit 2)
c:\users\-----\_bazel_-----\dktb5wq4\execroot\org_tensorflow\external\eigen_archive\eigen\src/Core/util/XprHelper.h(114): warning: __host__ annotation is ignored on a function("no_assignment_operator") that is explicitly defaulted on its first declaration

I have the same problem,but after recompile,it passed.

@07rafix Thank you for your instructions.
I'm using Visual Studio Community. I also happen to be building to a file named tensorflow.dll not tensorflow_cc.dll so this is my command:
"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx64/x64/link.exe" /nologo /DLL /SUBSYSTEM:CONSOLE -defaultlib:advapi32.lib -DEFAULTLIB:advapi32.lib -ignore:4221 /MACHINE:X64 @bazel-out/x64_windows-opt/bin/tensorflow/tensorflow.dll-2.params /OPT:ICF /OPT:REF /DEF:bazel-out/x64_windows-opt/bin/tensorflow/tensorflow_filtered_def_file.def /ignore:4070
I had to change the file permissions of libtensorflow.dll.ifso and tensorflow.dll
When I run, I get some warnings but no errors. I noticed that the date modified of tensorflow.dll increases, but tensorflow.lib stays the same. Should tensorflow.lib get updated? My other C++ project which has tensorflow.lib in Linker>Input is still failing to build because of missing symbols. I figure it's because tensorflow.lib isn't updating.
I shouldn't have to do bazel build --config=cuda tensorflow:tensorflow.lib again right?

I shouldn't have to do bazel build --config=cuda
tensorflow:tensorflow.lib again
right?
I believe you do have to build the lib again, this has been my experience.
On Sun, May 3, 2020 at 12:34 PM David<EMAIL_ADDRESS>wrote:

@07rafix https://github.com/07rafix Thank you for your instructions.
I'm using Visual Studio Community. I also happen to be building to a file
named tensorflow.dll not tensorflow_cc.dll so this is my command:
"C:/Program Files (x86)/Microsoft Visual
Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx64/x64/link.exe"
/nologo /DLL /SUBSYSTEM:CONSOLE -defaultlib:advapi32.lib
-DEFAULTLIB:advapi32.lib -ignore:4221 /MACHINE:X64
@bazel-out/x64_windows-opt/bin/tensorflow/tensorflow.dll-2.params /OPT:ICF
/OPT:REF
/DEF:bazel-out/x64_windows-opt/bin/tensorflow/tensorflow_filtered_def_file.def
/ignore:4070
I had to change the file permissions of libtensorflow.dll.ifso and
tensorflow.dll
When I run, I get some warnings but no errors. I noticed that the date
modified of tensorflow.dll increases, but tensorflow.lib stays the same.
Should tensorflow.lib get updated? My other C++ project which has
tensorflow.lib in Linker>Input is still failing to build because of missing
symbols. I figure it's because tensorflow.lib isn't updating.
I shouldn't have to do bazel build --config=cuda tensorflow:tensorflow.lib
again right?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/issues/23542#issuecomment-623149485,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJ23ZVXCJ7JY4GZFZA7QCDRPWTKDANCNFSM4GB6Y42Q
.

Cool but now I'm noticing that bazel build --config=cuda tensorflow:tensorflow.lib will replace tensorflow_filtered_def_file.def with a version without my added symbols. It also doesn't update or replace the tensorflow.lib unless I delete it beforehand.

Wow there's light at the end of this tunnel! I used lib.exe and got a tensorflow.lib
"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx64/x64/lib.exe" /nologo /SUBSYSTEM:CONSOLE /MACHINE:X64 /DEF:bazel-out/x64_windows-opt/bin/tensorflow/tensorflow_filtered_def_file.def /out:bazel-out/x64_windows-opt/bin/tensorflow/tensorflow.lib /ignore:4070 -ignore:4221

@DBraun Every source file of Tensorflow is built to .lib (static libary) file.
For example in tensorflow/core/platform/strcat.h there is
namespace tensorflow {
  namespace strings {
    namespace internal {
         string CatPieces(std::initializer_list<StringPiece> pieces);
    } } }

where StringPiece is typedef for absl::string_view. And this function is your missing symbol. You can find this symbol by calling inside the folder where binary files of tensorflow/core/platform are generated:
dumpbin /SYMBOLS strcat.lib
where strcat.lib should be located: bin\tensorflow\core\platform folder.
How it is related to your problem?
The file strcat.lib should be listed in tensorflow_cc.dll-2.params (it contains all static library which are used by LINK.exe to generate DLL and import library):
/WHOLEARCHIVE:bazel-out/x64_windows-opt/bin/tensorflow/core/platform/annotation.lib
/WHOLEARCHIVE:bazel-out/x64_windows-opt/bin/tensorflow/core/platform/strcat.lib
/WHOLEARCHIVE:bazel-out/x64_windows-opt/bin/tensorflow/core/platform/numbers.lib
you have to pass this file when calling LINK.exe.

Thank you @07rafix. In my case the file libstrcat.a has the symbols:
198 00000000 SECT41 notype ()    External     | ?CatPieces@internal@strings@tensorflow@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$initializer_list@Vstring_view@lts_2020_02_25@absl@@@5@@Z (class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl tensorflow::strings::internal::CatPieces(class std::initializer_list<class absl::lts_2020_02_25::string_view>))
I've noticed that the ending @lts_2020_02_25@absl@@@5@@Z is slightly different from what my C++ project says is missing:
Error	LNK2001	unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl tensorflow::strings::internal::CatPieces(class std::initializer_list<class absl::string_view>)" (?CatPieces@internal@strings@tensorflow@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$initializer_list@Vstring_view@absl@@@5@@Z)
Note @Vstring_view@lts_2020_02_25@absl@@@5@@Z vs.  @Vstring_view@absl@@@5@@Z
So if I add the symbol that actually came out of the dumpbin command, the longer one with @lts_2020_02_25 in it, link.exe does build a new dll.
This doesn't create a new .lib file, so I did this:
"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx64/x64/lib.exe" /nologo /SUBSYSTEM:CONSOLE /MACHINE:X64 /DEF:bazel-out/x64_windows-opt/bin/tensorflow/tensorflow_filtered_def_file.def /out:bazel-out/x64_windows-opt/bin/tensorflow/tensorflow.lib /ignore:4070 -ignore:4221
That created a new .lib, which I referenced in Linker>Input in my C++ project, but Visual Studio reports the same missing symbol, the one without @lts_2020_02_25 in it. If I do include that full symbol in tensorflow_filtered_def_file.def then link.exe fails.
In an alternative method, if I use the symbol from the dumpbin, link.exe works. Then I did
bazel build --config=cuda tensorflow:tensorflow.lib but that reset my customized tensorflow_filtered_def_file.def and my C++ project fails with all of its 22 missing symbols as opposed to just 4 that I mentioned earlier. Isn't your .def file getting reset too? At what moment do you get your .lib file? Thanks for your help.

So this issue is 3 years old and still open, proving that using tf in C++ on Windows is strictly impossible without manually intervening in the compilation process, with advanced knowledge.
I think this situation is far from satisfying and that this fact can be established :
Tensorflow CANNOT be used in C++ on Windows

Agreed. Sadly this and a similar issue has caused us to move to PyTorch, which has been a much more pleasant experience in deploying ML on multiple platforms.


Add support for version 3

Make version 3 possible

Hi, thanks for your contribution. I have tested it and it works.


Why is the shape of 'rpn_cls_score' Nx3xHxW

RPN predicts binary classes, why does the 'rpn_head' output 3 chananels?

In each location, there are 3 anchors (1 scale, 3 aspect ratio), so the output shape is n3h*w.

After a sigmoid function, each channel indicates the probability of the corresponding anchor being foreground.

@hellock @myownskyW7 Thx!


demo 40

hi @oblomov-dev
can you please put the local class of demo40 in the source files for us the non internet connection people, in order for the demo to work ?

added again

thanks


[question] Struggling with update to 0.14

Hi,
I'm currently trying to migrate my existing project to 0.14 so that I can use the new macros, but I'm struggling with my ZipWriter implementation. KotoObject now implies KotoSync and that seems to break some things. Here's my Zip struct:
#[derive(Clone, KotoCopy, KotoType)]
struct Zip {
    inner: PtrMut<ZipWriter<File>>,
    needs_finish: bool,
}

This gives me the following error when I try to create a koto_impl for it:
error[E0277]: `NonNull<zstd_sys::ZSTD_CCtx_s>` cannot be shared between threads safely
   --> src\scripting\api\arch.rs:181:21
    |
181 | impl KotoObject for Zip {
    |                     ^^^ `NonNull<zstd_sys::ZSTD_CCtx_s>` cannot be shared between threads safely
    |
    = help: within `ZipWriter<std::fs::File>`, the trait `KotoSync` is not implemented for `NonNull<zstd_sys::ZSTD_CCtx_s>`, which is required by `api::arch::Zip: KotoSync`
note: required because it appears within the type `zstd_safe::CCtx<'static>`
   --> C:\Users\asaljo\.cargo\registry\src\index.crates.io-6f17d22bba15001f\zstd-safe-5.0.2+zstd.1.5.2\src\lib.rs:156:12
    |
156 | pub struct CCtx<'a>(NonNull<zstd_sys::ZSTD_CCtx>, PhantomData<&'a ()>);
    |            ^^^^
note: required because it appears within the type `zstd::stream::raw::Encoder<'static>`

My program is single-threaded anyway so I thought maybe switching the underlying PtrMut implementation from Arc to Rc would help but I didn't manage to use the rc feature instead of arc (always getting the double-feature warning from koto_memory, although I disabled default-features).
Any help would be appreciated.

Hi @jasal82, I just double-checked that using non-Send types works with Koto's rc feature in this test repo. The setup in the test app is very simple, so I guess there's something else going on with the way your project's making use of Koto? Maybe the arc feature is creeping in to the picture somehow? Do you have a branch you can point me to that demonstrates the problem?

Yes, as I said I tried exactly this procedure (disabling default features and using rc, in koto and all extension modules) but I always end up with rc and arc features during compilation somehow. I'll try to debug the build some more today.

Even with these dependencies (note explicit koto_memory reference)
koto = { version = "0.14.0", default-features = false, features = ["rc"] }
koto_json = { version = "0.14.0", default-features = false, features = ["rc"] }
koto_memory = { version = "0.14.0", default-features = false, features = ["rc"] }
koto_regex = { version = "0.14.0", default-features = false, features = ["rc"] }
koto_serialize = { version = "0.14.0", default-features = false, features = ["rc"] }
koto_tempfile = { version = "0.14.0", default-features = false, features = ["rc"] }
koto_toml = { version = "0.14.0", default-features = false, features = ["rc"] }
koto_yaml = { version = "0.14.0", default-features = false, features = ["rc"] }

I get redefinition errors from koto_memory:
error[E0428]: the name `make_ptr` is defined multiple times
  --> C:\Users\asaljo\.cargo\registry\src\index.crates.io-6f17d22bba15001f\koto_memory-0.14.0\src\rc\ptr.rs:18:1
   |
18 | macro_rules! make_ptr {
   | ^^^^^^^^^^^^^^^^^^^^^ `make_ptr` redefined here
   |
  ::: C:\Users\asaljo\.cargo\registry\src\index.crates.io-6f17d22bba15001f\koto_memory-0.14.0\src\arc\ptr.rs:18:1
   |
18 | macro_rules! make_ptr {
   | --------------------- previous definition of the macro `make_ptr` here
   |
   = note: `make_ptr` must be defined only once in the macro namespace of this module

and this error:
error: A single memory management feature can be enabled at a time
  --> C:\Users\asaljo\.cargo\registry\src\index.crates.io-6f17d22bba15001f\koto_memory-0.14.0\src\lib.rs:16:1
   |
16 | compile_error!("A single memory management feature can be enabled at a time");
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Ok I see the problem now, the libs that depend on koto_serialize aren't disabling default features, which is how the arc feature creeps in.
I'm going to work on a quick fix now and then play around a bit to see if there's a cleaner approach to selecting the rc build type, I don't like how cumbersome this is.

Adding a koto_json dependency in your test project is already enough to reproduce the error. It seems that feature transitivity is not working correctly on the modules.

Yes, exactly. It's because koto_json depends on koto_serialize without disabling default features, which causes arc to be enabled.

I think it's the koto_serialize dependency:
├── koto_json feature "rc"
│   ├── koto_json v0.14.0
│   │   ├── koto_runtime v0.14.0 (*)
│   │   ├── koto_serialize feature "default"
│   │   │   ├── koto_serialize v0.14.0
│   │   │   │   ├── koto_runtime v0.14.0 (*)
│   │   │   │   └── serde feature "default"
│   │   │   │       ├── serde v1.0.203
│   │   │   │       └── serde feature "std"
│   │   │   │           └── serde v1.0.203
│   │   │   └── koto_serialize feature "arc"
│   │   │       ├── koto_serialize v0.14.0 (*)
│   │   │       └── koto_runtime feature "arc"
│   │   │           ├── koto_runtime v0.14.0 (*)
│   │   │           └── koto_memory feature "arc"
│   │   │               ├── koto_memory v0.14.0 (*)
│   │   │               └── koto_memory feature "parking_lot"
│   │   │                   └── koto_memory v0.14.0 (*)

Sorry, I just posted stuff without getting your updates in the thread

Sounds reasonable. It's a bit annoying having to set the feature on all of the dependencies. Thanks for the quick response.

I think there's a cleaner approach (only exposing arc/rc features in leaf-node crates like koto or koto_runtime), but removing the existing rc/arc features would be a breaking change so can't go in to a 0.14.1 release.
I'll backport the quick fix, and then the cleanup changes will go onto main.

I've just published 0.14.1 which includes the fix for this issue.


fix(server): enable xml serialisation api-wide; fix missing route elem

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

18 of 18 (100.0%)  changed or added relevant lines in 5 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
506

Relevant Lines:
506

💛  - Coveralls


SwiftEval: Load tests bundle if exists.

Previously, when running tests through injection, if the test would have depended upon a symbol that's in the tests bundle, it would give an undefined symbol error. This commit solves this by loading the tests bundle if it exists, which allows for much better support when loading new test files through injection.
Notes:

Right now the tests bundle is loaded regardless of the file being injected - I couldn't figure whether I can get the name of the file from loadAndInject function.
I only tested it on iOS, with standalone mode and with the mac app.

Awesome! I'll take your word for it working and I can roll a new release candidate. Thanks for wading through some pretty eccentric code to work this out. Is it worth combining the two methods to be able to load than one .xctest bundle? Would that ever happen?

I went ahead, merged and rolled a new release candidate with your change. Can you check it for me please? https://github.com/johnno1962/InjectionIII/releases/tag/4.5.3. Thanks very much taking the time to fix this.

@johnno1962 sorry for the delay, it works perfectly 😄

It's a bit of a novelty to get a PR on SwiftEval.swift. I wonder why 😄? Thanks again @byohay.


Handling IX with redundant peering ports

Environment

Python version:  3.6.x
Peering Manager version:  master

Proposed Functionality
It may be that you have redundant ports on the same IX. In that case it is hard to differentiate for which port you are doing changes. It is working without any issues but in the configuration process of sessions it is hard to see for which peering port you are doing changes.

Use Case
Management of redundant ports at same exchange.

External Dependencies

What are you calling redundant ports? Are these ports using different IP addresses to connect to the IX? If that's the case I would suggest declaring two different IXs.
However I might not understand your case so could please give us more details about it?

If you are talking about having two routers at the same IXP, that should be covered already. You just have to give the slugs a unique name (not sure about the IXP name though) during the import from PDB.

If you are talking about having two routers at the same IXP, that should be covered already. You just have to give the slugs a unique name (not sure about the IXP name though) during the import from PDB.

Indeed. IXP name do not need to be uniques (only slugs).

Closing because this feature can already be used.


bootmenupolicy being set to legacy without selecting the option to

Describe the bug
The tweak (WPFFeatureEnableLegacyRecovery) that does 'bcdedit /set bootmenupolicy legacy' is ran without the 'Enable Legacy F8 Boot Recovery' checkbox selected.
To Reproduce
No options from the 'Features' sections were selected
Steps to reproduce the behavior:

Go to 'Tweaks'
Click on 'Recommended selections: Desktop'
Click on 'Run Tweaks'
Type bcdedit in console and see 'bootmenupolicy: Legacy'

Expected behavior
This should only happen if user enables the checkbox 'Enable Legacy F8 Boot Recovery'.
Additional Information
Here's a log (for some reason it didn't capture the whole output, but whatever), where you can see me running bcdedit after doing the steps described and seeing it being set to legacy: Winutil.log.

Here's a log (for some reason it didn't capture the whole output, but whatever), where you can see me running bcdedit after doing the steps described and seeing it being set to legacy: Winutil.log.

Run the script with -Debug Switch, command: iex "& { $(irm christitus.com/win) } -Debug"


Fork IDCompressor into tree directory

Description
This is a fork of the IDCompressor that exists in the experimental/dds/tree directory. I'm copyint it to the new tree directory so that we can make breaking changes to it (removing attribution and overrides to support the updated design).
Reviewer Guidance
Because of different tsconfig and eslint configurations, there are several issues that make moving this somewhat difficult. We also weren't completely decoupled in the old directory which has led to me copying over some utility files (Common.ts and UuidUtilities.ts).
Some specific issues to call out:

The old tsconfig didn't have noImplicitAny set to true and our new one does. There are a few instances that I've disabled with // @ts-ignore that we should fix (they're in tests, so probably not the biggest deal).
Multiple disabled no-unsafe-return instances.
Our new eslint config doesn't allow for variable shadowing, which we do a lot of (I can probably clean these up as part of this, but it's a pain)
Our tests are using chai but none of the new tree tests do. Because we're using chai in these tests, the no-unused-expressions eslint rule has to be disabled.

Still need to align the tests we run with the old suite.  I'll also rename the test files to follow the normal naming convention (spec.ts) instead of how they're named currently.


Added componentWillReceiveProps to handle late arriving value

The previous version determined the state in the component constructor. This works as long as the value is provided on the first render. React often renders with missing props initially, so this is a way to make sure a proper render is completed when props arrive a moment later.

Thanks a lot :) Sorry for late check


Package size is too big

Get this warning when deploying now
WARNING  Compiled with 3 warnings                                                                                10:27:11 PM
warning
asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets:
js/chunk-vendors.d8560836.js (801 KiB)
warning
entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
app (917 KiB)
js/chunk-vendors.d8560836.js
js/app.bb109e29.js
warning
webpack performance recommendations:
You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
For more info visit https://webpack.js.org/guides/code-splitting/
File                                      Size             Gzipped
dist/js/chunk-vendors.d8560836.js         801.29 KiB       201.78 KiB
dist/js/app.bb109e29.js                   115.41 KiB       25.30 KiB
dist/helper/wet.js                        3.36 KiB         1.03 KiB
dist/helper/startswith.js                 1.58 KiB         0.69 KiB
dist/service-worker.js                    0.96 KiB         0.54 KiB
dist/precache-manifest.26f6c784a0a5278    0.71 KiB         0.32 KiB
abea8f40f146db22d.js
dist/survey.css                           0.07 KiB         0.09 KiB
Images and other types of assets omitted.

It also downloads WxT through CDTS which makes it even bigger