Error Veins shared libs - makefile

I decided to create a new OMNeT++ project to keep my applications separated from the Veins project.
However, I am facing problems when I try to execute the appls from my project src folder.
I've already configured my project and Veins according to the following link:
https://omnetpp.org/pmwiki/index.php?n=Main.HowToExtendAProject
I also tried to recreate the makefiles from my project but it doesnt work.
My .cc files use Register_Class() and Define_Module() properly but the Error Log keeps showing this error Class not found -- perhaps its code was not linked in, or the class wasn't registered with Register_Class(), or in the case of modules and channels, with Define_Module()/Define_Channel() -- in module (omnetpp::cModule)
I really feel the problem has to do with the makefiles because when I import this application from my project to Veins src folder it works perfectly.
Ps.: I'm using OMNeT 5.1 + Veins 4.5 + Sumo 0.28
Any help or suggestions would be appreciated.

Related

WiFi32 module examples not compiled

Just downloaded the project from Harmony 3 with all the relevant libraries and when hitting compile i'm getting lot of errors.
When compiling a project contain free rtos+usb cdc+rtc+nvm its works fine, but after adding the wifi it fail.
Include video of the entire process, from adding the project to compiling it:
https://www.youtube.com/watch?v=HADJdTM_noE
Something is wrong with the ide, installed on another laptop and got the same problems. support ticket open two weeks ago and they cant help.
All had to do is to donwload ALL the harmony content there are. (33Gb)

Linker error building Adobe DNG SDK on MacOS 11

I am working on a project that uses Adobe's DNG SDK 1.6 library, and it is supposed to work on Windows and MacOS.
The library has instructions on how to build it for both platforms, but I had to figure out an error that came up on Windows with Visual Studio. I am not very experienced with big C++ projects so it was not trivial but I got it working. Most of my own code will be done in C# .Net Core, calling the native libraries using a wrapper class with P/Invoke.
Now for Mac that's a different story, I have a MacOS 11 VM, installed Xcode 12.5.1 and followed the steps provided, as expected, it does not work. Bare in mind this is my first time touching Xcode and MacOS.
The project I am trying to build is dng_validate, and it depends on two libraries built by these projects: XMPFiles64 and XMPCore64.
The library projects build without any hiccups, each one of them creating a ".a" file in the folder: dng_sdk_1_6/xmp/toolkit/public/libraries/macintosh/intel_64_libcpp/Debug, they are named libXMPFilesStaticDebug.a and libXMPCoreStaticDebug.a respectively.
When I try to build the dng_validate project, I get the following error:
Library not found for -lXMPFilesStaticDebug
Because of the the error starting with an "l" instead of "lib", under both libraries project settings, I changed the "Executable Prefix" setting to "l" instead of "lib". Rebuilt both of them and made sure the file names changed as expected. But the error persists when trying to build the main project.
Under dng_validate's project settings, there is a setting called "Library Search Paths" and it does point to the proper aforementioned folder using a relative path. I even changed it to an absolute path to see if that would make it work.
I am really lost here, does anyone have an idea of what might be causing it?
Well... After asking on other forums and almost hiring a freelancer to fix this for me, I tried another shot in the dark of renaming the library files and it worked.
I changed the extensions of libXMPFilesStaticDebug.a and libXMPCoreStaticDebug.a from ".a" to ".dylib" and it just compiled and blew my mind with it.

What do I need to do to run a TcpLwip simulation in Omnet++

I am trying to simulate the lwIP example simulation on OMNET 5.6.1. I am using INET 4.2.4. The simulation I am trying to run can be found at inet/examples/inet/nclients/omnetpp.ini When I try to run it, it gives me the following error:
"Class "inet::TcpLwip" not found -- perhaps its code was not linked in, or the class wasn't registered with Register_Class(), or in the case of modules and channels, with Define_Module()/Define_Channel()--in module (omnetpp::cModules) NClients (id=1), during network setup."
I am new to OMNET++ and will appreciate your guidance on what to do.
By default the LWiP feature is not turned on in INET. You should either open the INET project's properties dialog in the IDE and on the OMNeT++ page find the Project Fetures list and enable TcpLwip, or from the command line (standing in the INET directory) execute opp_featuretool enable TcpLwip and then call make makefiles and then rebuild.

Using external libraries in Swift 4 playground

I've been trying to learn Swift 4, and therefore needed to use Xcode9 Beta as the IDE. I would like to load a large CSV data file to do some data analysis using a playground. The library I'm trying to use is CSVImporter, installed using Carthage, as recommended by the developer.
I've spent a week on this issue, trying to follow guides I've found online, such as here - Stackoverflow, here - Medium, but they all refer to previous versions of Swift and Xcode, and none seem to work.
In general their approach seems to be incorporating the playground into workspace with a project that uses the imported resource. I usually get the "No such module 'CSVImporter'".
My specific question is: How do I set up a Swift 4 Playground so that I can import CSVImporter with Xcode 9 Beta?
While I have this specific task, I think this would be of general interest to the community. I suspect that someone with a far clearer idea than I of how Xcode executes builds and resolves build dependencies would be able to address this fairly easily! Many thanks.
Basically, you have it right. Approach is:
Create new XCode project for Cocoa Framework under MacOS
Create Cartfile with your dependencies
Build dependencies (e.g. carthage update --platform macOS)
Import the .framework files that were built (from Carthage/Build/Mac)
Create extra build phases step that will run script /usr/local/bin/carthage copy-frameworks and copy imported frameworks (just follow Carthage's guidelines, it's all the same so far)
Create some .swift file (e.g. main.swift) that will just import frameworks that you have imported via Carthage
Save XCode project as a workspace file
Create new playground (also MacOS) and save it under the projects root folder of your "fake" framework
Add the playground into workspace (as of XCode 9 it's not possible to create playgrounds directly in the projects/workspaces, so you need to do this trick with adding an existing file to the workspace)
Build your project
In the playground file, import your "fake" framework (see step 1), and only after import your carthage dependency framework.
Profit
If your external libraries are SPM packages you can create a playground with Arena:
arena https://github.com/finestructure/Gala
🔧 resolving package dependencies
📔 libraries found: Gala
✅ created project in folder 'SPM-Playground'

Artery installation with Veins OMNeT++

I already installed and tested the Veins v4a2 successfully (with the RSUexample included). In order to add the ITS-G5 application layer to the Veins, I tried to use the "Artery" unsuccessfully as when trying to run the example, it throws an error like:
Error in module (cModule) RSUExampleScenario (id=1) during network
setup: Class "Veins::ObstacleControl" not found
Perhaps its code was not linked in, or the class wasn't registered with >Register_Class(), or in the case of modules and channels, with >Define_Module()/Define_Channel().
The steps I followed are:
Download Vanetza (and the modules required)
Build Vanetza with no errors
Download Artery
Build Artery liked with Vanetza with no errors
Copy the "Artery" folders and files (examples, src, tests, Makefile, configure...), to the Veins folder, overwriting the files.
The build of the Veins is done correctly, but the execution of both (artery and veins) examples fail with the showed error.
Actually, the same error raises if I try to run the Artery or RSU examples from the Artery code directly, without the Veins code (it seems as the Artery code constains the Veins already).
Has anybody faced this issue before?
First of all, you don't need to copy Artery into Veins and overwrite any files because your assumption is correct: Artery's repository contains the full Veins sources because Artery is an add-on built upon Veins.
The error message is actually a little bit misleading but if you take a closer look at the full output log you will most probably find a line about an undefined reference stating which symbol is actually missing in the compiled binary. This is often caused by building Vanetza in debug and Artery in release mode or vice versa.

Resources