codegen:- Problems when attempting to build a c++ based .exe rather than c?
4 次查看(过去 30 天)
显示 更早的评论
I am having a few problems with using codegen (via the gui interface).
I have successfully built a very simple c based .exe program based on the following two files.
.m
function r = coderand() %#codegen
r = rand();
main.c
#include <stdio.h>
#include <stdlib.h>
#include "coderand.h"
int main()
{
printf("coderand=%g\n", coderand());
return 0;
}
If I now try and change out main.c for the same code in a main.cpp,
main.cpp
#include <stdio.h>
#include <stdlib.h>
#include "coderand.h"
void main(int argc, char **argv)
{
printf("coderand=%g\n", coderand());
}
I get the following compile errors.
main.obj : error LNK2019: unresolved external symbol "double __cdecl coderand(void)" (?coderand@@YANXZ) referenced in function _main 25 F:\CoderTest\coderand.exe : fatal error LNK1120: 1 unresolved externals
I assume it is because I am still building c code. What option do I have to change to fix this?
0 个评论
回答(2 个)
Kaustubha Govind
2012-4-16
You probably need to add a extern "C" { } block around the declaration for coderand() in coderand.h, so that the C++ compiler doesn't use C++ style linkage.
Or try:
extern "C" {
#include "coderand.h"
}
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 MATLAB Algorithm Acceleration 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!