Clear Filters
Clear Filters

Calling an outside C function from a legacy_code block !

1 view (last 30 days)
I have the following set of 3 files :
test.h :
#ifndef _TEST_H_
#define _TEST_H_
extern int test (int a, int b);
extern int sum (int a, int b);
#endif
test.c :
#include "test.h"
int test(int a, int b)
{
int sum;
sum = test_sum(a, b);
return sum;
}
test_sum.c :
#include "test.h"
int test_sum(int a, int b)
{
int sum;
sum = a + b;
return sum;
}
The stack is : test (to be compiled into legacy_code simulink block) > test_sum (in an external C file that's in the scope)
Now the problem is that when I try to compile the test function into a block using legacy_code, the following compilation error occurs :
error LNK2019: unresolved external symbol test_sum referenced in function test
If I copy and paste the test_sum function from test_sum.c to test.c then there's no error.
My question : How can I call another C function from within a legacy_code block ? Or is it impossible ?

Accepted Answer

Franck Yin
Franck Yin on 18 May 2017
It was simple. All files must be added to the SourceFiles property.
What it was like before :
def = legacy_code('initialize');
def.SourceFiles = {'test.c'};
How it was modified in order to build properly :
def = legacy_code('initialize');
def.SourceFiles = {'test.c','test_sum.c'};

More Answers (0)

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!