C++の質問です
Microsoft Visual Basic 6.0の質問です.以下のエラーが出るのですがCとC++の言語の影響によるものでしょうか?
6273次元境界.obj : error LNK2001: 外部シンボル ""class complex __cdecl operator*(class complex,class complex)" (??D@YA?AVcomplex@@V0@0@Z)" は未解決です
6273次元境界.obj : error LNK2001: 外部シンボル ""class complex __cdecl operator/(class complex,class complex)" (??K@YA?AVcomplex@@V0@0@Z)" は未解決です
6273次元境界.obj : error LNK2001: 外部シンボル ""class complex __cdecl cpow(class complex,double)" (?cpow@@YA?AVcomplex@@V1@N@Z)" は未解決です
6273次元境界.obj : error LNK2001: 外部シンボル ""public: __thiscall complex::complex(double,double)" (??0complex@@QAE@NN@Z)" は未解決です
元の形です
#include <iostream>
#include <string>
#include "complex.h"
#include <math.h>
#include <stdio.h>
#define RADIAN(ARC) ((ARC) * 3.14159 / 180)
using namespace std;
int main(void)
{
const double pi=3.141592654;
int k;
double omega,freq;
double I0,r0,z,R,Rk;
double lambdag,ag;
double lambda1,a1,B1,l1;
double lambda2,a2,l2;
double p,p2,pg;
double a11,a21,ag1,Rk1,l11,l21,p11,p21;
complex r1,g,S2;
complex sigma1,sigma2,sigmag;
printf("接触熱抵抗");
scanf("%lf",&R);
printf("加熱光半径(10^-6)×");
scanf("%lf",&Rk1);
Rk=Rk1*pow(10,-6);
printf("1層目熱伝導率");
scanf("%lf",&lambda1);
printf("1層目温度伝導率(10^-6)×");
scanf("%lf",&a11);
a1=a11*pow(10,-6);
printf("1層目厚み(10^-6)×");
scanf("%lf",&l11);
l1=l11*pow(10,-6);
printf("2層目熱伝導率");
scanf("%lf",&lambda2);
printf("2層目温度伝導率(10^-6)×");
scanf("%lf",&a21);
a2=a21*pow(10,-6);
printf("2層目厚み(10^-6)×");
scanf("%lf",&l21);
l2=l21*pow(10,-6);
printf("バッキング熱伝導率");
scanf("%lf",&lambdag);
printf("バッキング温度伝導率(10^-6)×");
scanf("%lf",&ag1);
ag=ag1*pow(10,-6);
printf("1層目半径境界(10^-6)×");
scanf("%lf",&p11);
p=p11*pow(10,-6);
printf("2層目半径境界(10^-6)×");
scanf("%lf",&p21);
p2=p21*pow(10,-6);
printf("バッキング半径境界");
scanf("%lf",&pg);
I0=2829;
r0=0;
z=0;
B1=6.07*pow(10,7);
freq=100;
omega=2*pi*freq;
sigma1=cpow(complex(0,omega/a1),0.5);
sigma2=cpow(complex(0,omega/a2),0.5);
sigmag=cpow(complex(0,omega/ag),0.5);
r1=B1/sigma1;
g=(lambdag*sigmag)/(lambda1*sigma1);
S2=(lambda2*sigma2)/(lambda1*sigma1);
printf("%f\n",R*Rk);
printf("%f\n",Rk);
printf("%f\n",lambda1);
printf("%f\n",a1);
printf("%f\n",l1);
printf("%f\n",B1);
scanf("%d",&k);//
return 0;
}
そしてcomplex.hです
#include <iostream.h>
#ifndef __COMPLEX_H__
#define __COMPLEX_H__
class complex{
double r,i,p,w;
public:
complex(double a=0,double b=0);
double real();
double imag();
double omega();
double phai();
friend complex cpow(complex a,double b);
friend complex cexp(complex a);
friend complex operator +(complex a, complex b);
friend complex operator -(complex a, complex b);
friend complex operator *(complex a, complex b);
friend complex operator /(complex a, complex b);
friend int operator ==(complex a, complex b);
friend ostream& operator <<(ostream& os, complex& c);
friend istream& operator >>(istream& is, complex& c);
};
#endif
です.
extern "C"を使えばよいのでしょうか?(やりかたが間違っているのか,うまくできません)
よろしくお願いいたします.